本蒟蒻发表一篇用深搜的题解(P1030)
查看原帖
本蒟蒻发表一篇用深搜的题解(P1030)
1005667
housiqiao楼主2024/8/29 10:49
代码很简单,重要的是理解思路
用中序和后序求前序的方法,网上一大堆,自己搜(CSDN)
#include <iostream>
#include <string>
using namespace std;
string a, b;
int posa[30] = {0}, posb[30] = {0};
void dfs(int iL, int pL, int len) {
	if (len <= 0)	return;
	char root = b[pL + len - 1];
	int pos = posa[root - 'A'];
	int len1 = pos - iL, len2 = len - len1 - 1;
	cout << root;
	dfs(iL, pL, len1);
	dfs(pos + 1, pL + len1, len2);
}
int main() {
	cin >> a >> b;
	for (int i = 0; i < a.size(); i++) {
		posa[a[i] - 'A' ] = i;
	}
	for (int i = 0; i < b.size(); i++) {
		posb[b[i] - 'A' ] = i;
	}
	dfs(0, 0, a.size());
	return 0;
}
2024/8/29 10:49
加载中...