洛谷 P1030 [NOIP 2001 普及组] 求先序排列

本题主要考察的是根据后序中序建树,但是实际上不需要真的建树。

AcCode:

#include<iostream>
using namespace std;
string m, b;
void print(int ml, int mr, int bl, int br){
	if(ml >= mr || bl >= br){
		return ;
	}
	char rt = b[br - 1];
	cout << rt;
	int pos = 0;
	while(m[pos] != rt && pos < mr) pos++;
	print(ml, pos, bl, bl + pos - ml);
	print(pos + 1, mr, bl + pos - ml, br - 1);
}

int main(){
	cin >> m >> b;
	int cnt = m.length();
	print(0, cnt, 0, cnt);
	return 0;
} 
posted @ 2025-05-08 17:59  Yuhhhhh  阅读(22)  评论(0)    收藏  举报