#include <iostream>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <cstring>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <numeric>
#include <chrono>
#include <ctime>
#include <cmath>
#include <cctype>
#include <string>
#include <cstdio>
#include <iomanip>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <iterator>
using namespace std;
void Build(string& a, string& b, int aStart, int aEnd, int bStart, int bEnd) {
if (aStart > aEnd || bStart > bEnd) return ;
char val = a[aStart];
int index = find(b.begin() + bStart, b.begin() + bEnd + 1, val) - b.begin();
int len = index - bStart;
Build(a, b, aStart + 1, aStart + len, bStart, index - 1);
Build(a, b, aStart + len + 1,aEnd, index + 1, bEnd);
cout << val;
}
int main()
{
string a, b;
while (cin >> a >> b) {
int alen = a.size(), blen = b.size();
Build(a, b, 0, alen - 1, 0, blen - 1);
cout << endl;
}
return 0;
}
习题6-3(uva-536)
最新推荐文章于 2021-08-02 14:16:43 发布
本文介绍了一个使用C++实现的递归构建二叉树的示例程序。通过输入两个字符串,程序能够构建并输出一棵二叉树的结构。文章展示了如何利用递归方法处理字符串,并详细解释了find函数的使用以及递归调用的过程。
5151

被折叠的 条评论
为什么被折叠?



