#include <iostream>
using namespace std;
bool dp[201][201];
char fir[201],sec[201],thi[402];
int n,firLen,secLen,thiLen;
bool isok;
void dfs(int i,int j,int k)
{
if(k==thiLen)
{
isok=true;
return ;
}
if(isok)return;
if(dp[i][j])return;
if(i<firLen&&fir[i]==thi[k])
dfs(i+1,j,k+1);
if(j<secLen&&sec[j]==thi[k])
dfs(i,j+1,k+1);
dp[i][j]=true;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
isok=false;
memset(dp,false,sizeof(dp));
scanf("%s%s%s",fir,sec,thi);
firLen=strlen(fir);
secLen=strlen(sec);
thiLen=strlen(thi);
dfs(0,0,0);
cout<<"Data set "<<i<<": ";
cout<<(isok?"yes":"no")<<endl;
}
}
}
HDOJ 1501 Zipper 记忆化搜索
最新推荐文章于 2018-03-01 23:24:40 发布