蒟蒻不晓得哪有问题 样例过了
#include<iostream>
#include<string>
#include<map>
using namespace std;
string b, m;
struct node { char lc, rc; };
map<char,node>tree;
int find(char x)
{
for (int i = 0; i < m.size(); i++)
{
if (m[i] == x)return i;
}
}
int p;
char DFS(int l, int r)
{
char root = b[--p];
int rootp = find(root);
if (rootp != r)tree[root].rc = DFS(rootp + 1, r);
if (rootp != l)tree[root].lc = DFS(l, rootp - 1);
return root;
}
void front(char root)
{
cout << root;
if (root != '\0')front(tree[root].lc);
if (root != '\0')front(tree[root].rc);
}
int main()
{
cin >> m;
cin >> b;
p = b.size();
char root = DFS(0, b.size() - 1);
front(root);
}