首页 > 代码库 > POJ 2255 Tree Recovery
POJ 2255 Tree Recovery
主要是递归思想吧,然后找到边界条件,推了好久。
http://poj.org/problem?id=2255
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 string str1, str2; 6 void recovery(int Lstr1, int Rstr1, int Lstr2, int Rstr2) { 7 if (Lstr2 == Rstr2) 8 { 9 cout << str2[Lstr2]; 10 return; 11 } 12 if (Lstr2 > Rstr2)//这是中止条件 13 return; 14 //找到根节点 15 int i = Lstr2; 16 while (str1[Lstr1] != str2[i]) 17 i++; 18 int mov = i - Lstr2 - 1; 19 //下面是分为两颗子数 20 recovery(Lstr1 + 1, Lstr1 + 1 + mov, Lstr2, i - 1); 21 recovery(Lstr1 + 1 + mov + 1, Rstr1, i + 1, Rstr2); 22 23 24 cout << str2[i]; 25 return; 26 } 27 28 int main() { 29 while (cin >> str1 >> str2) { 30 recovery(0, str1.size() - 1, 0, str2.size() - 1); 31 cout << endl; 32 } 33 return 0; 34 }
POJ 2255 Tree Recovery
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。