解題心得
跟上一題差不多。
程式碼
#include <iostream>
#include <map>
using namespace std;
map<char, int> m;
string inOrder, postOrder;
void printPreorder(int start, int end)
{
if (start > end) return;
int val = -1, flag = -1;
for (int i = start; i <= end; i++)
{
if (m[inOrder[i]] > val)
{
val = m[inOrder[i]];
flag = i;
}
}
cout << inOrder[flag];
printPreorder(start, flag - 1);
printPreorder(flag + 1, end);
}
int main()
{
cin >> inOrder >> postOrder;
for (int i = 0; i < postOrder.length(); i++)
m[postOrder[i]] = i;
printPreorder(0, postOrder.length() - 1);
return 0;
}
沒有留言:
張貼留言