範例程式碼 uva536

//uva536
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

char preord[30], inord[30];
int len;

void solve(int d, int k , int left, int right) {
	if (left > right || right < left || k >= len) return;

	if (left == right)
		printf("%c", inord[left]);
	else {
		int i;
		for (i = left; i < len; i++) {
			if (inord[i] == preord[k]) {
				solve(d + 1, k + 1, left, i - 1);
				solve(d + 1, k + (i - left) + 1, i + 1, right);
				printf("%c", inord[i]);
				break;
			}
		}
	}
}

int main() {
	while (scanf("%s %s", preord, inord) == 2) {
		len = strlen(preord);
		solve(0, 0, 0, len - 1);
		printf("\n");
	}

	return 0;
}