20分map求调
查看原帖
20分map求调
699471
yuxiaoyu20090104楼主2022/8/18 22:03

蒟蒻不晓得哪有问题 样例过了

#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);
}
2022/8/18 22:03
加载中...