[USACO3.4] 美国血统 American Heritage - 洛谷
一道难以理解的题,这里选择递归。
递归过程:
从左边开始递归,逐渐结束,按序号输出。
代码如下:
#include<stdio.h>
#include<string.h>
char a[10000],b[10000];
void dfs(int l1,int l2,int l3,int l4)
{
if(l1>l2||l3>l4)
return ;
for(int i=l1;i<=l2;i++){
if(a[i]==b[l3]){
dfs(l1,i-1,l3+1,l3+i-l1);
dfs(i+1,l2,l3+i-l1+1,l4);
printf("%c",a[i]);
}
}
}
int main()
{
scanf("%s",a);
getchar();
scanf("%s",b);
dfs(0,strlen(a),0,strlen(b));
return 0;
}