#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
#define MAX 202
int T;
char a[MAX];int al;
char b[MAX];int bl;
char c[2*MAX];int cl;
int v[MAX][MAX];
int find;
void dfs(int ax,int bx,int cx)
{
//如果是最终点,判断
if(cx>=cl)
{
find=1;
return;
}
if(find)
return;
if(v[ax][bx])
return ;
v[ax][bx]=1;
if(a[ax]==c[cx]&&ax<al)
dfs(ax+1,bx,cx+1);
if(b[bx]==c[cx]&&bx<bl)
dfs(ax,bx+1,cx+1);
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d",&T);
int k=1;
for(k=1;k<=T;k++)
{
//初始化
scanf("%s %s %s",a,b,c);
find=0;
int i,j;
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
v[i][j]=0;
al=strlen(a);
bl=strlen(b);
cl=strlen(c);
//处理
dfs(0,0,0);
printf("Data set %d: ",k);
if(find==1)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
return 0;
}
hdoj 1501 (import,本来以为这是个搜索题,后来发现是一个dp,而且第一次还没有设置状态)
最新推荐文章于 2018-03-01 23:24:40 发布