//4_7_10: Zipper 字符串组成问题,次序需要相同 POJ2192 ZOJ2401
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
char str1[210],str2[210],str3[410];
int len1,len2;
int i,j,k,n;
int can[210][210];
scanf("%d",&n);
for(k = 1;k <= n;k ++)
{
scanf("%s%s%s",str1,str2,str3);
len1 = strlen(str1);
len2 = strlen(str2);
memset(can,0,sizeof(can));
can[0][0] = 1;
for(i = 0;i <= len1;i++)
for(j = 0;j <= len2;j++)
{
if(j >= 1 && str3[i + j - 1] == str2[j - 1])
can[i][j] = can[i][j] || can[i][j - 1];
if(i >= 1 && str3[i + j - 1] == str1[i - 1])
can[i][j] = can[i][j] || can[i - 1][j];
}
printf("Data set %d: %s\n",k,can[len1][len2] ? "yes" : "no");
}
return 0;
}
/*测试结果:通过POJ2192 ZOJ2401检测
3
cat tree tcraete
Data set 1: yes
cat tree catrtee
Data set 2: yes
cat tree cttaree
Data set 3: no
请按任意键继续. . .
*/
POJ2192 ZOJ2401 Zipper
最新推荐文章于 2015-04-10 18:44:36 发布