您的位置:首页 > 其它

American Heritage usaco

2016-09-02 13:42 363 查看
基础题,主要思路是找到根,然后分别递归即可;

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cstdlib>
using namespace std;
char s[30],t[30];
int n;
void dfs(int x,int y,int a,int b){
int k;
for(int i=a;i<=b;i++)if(s[i]==t[x]){k=i;break;}
if(k!=a)dfs(x+1,x+k-a,a,k-1);
if(k!=b)dfs(x+k-a+1,y,k+1,b);
cout<<t[x];
}
void work(){
scanf("%s%s",s,t);
n=strlen(s);
dfs(0,n-1,0,n-1);
}
int main(){
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
work();
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: