POJ 2255 Tree Recovery
模板题
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define maxn 50
char str1[maxn],str2[maxn];
int getm(char ch)
{
for(int i=0; i<strlen(str2); i++)
if(ch==str2[i]) return i;
}
void solve(int l1,int r1,int l2,int r2)
{
int m=getm(str1[l1]);
if(m>l2) solve(l1+1,l1-l2+m,l2,m-1);
if(m<r2) solve(l1-l2+m+1,r1,m+1,r2);
printf("%c",str1[l1]);
}
int main()
{
while(~scanf("%s%s",str1,str2))
{
solve(0,strlen(str1)-1,0,strlen(str2)-1);
printf("\n");
}
return 0;
}