您的位置:首页 > 其它

HDU 1501 Zipper(DFS)

2012-07-29 10:29 525 查看
题目链接

不加记忆化 搜索 TLE,加上15ms.....

#include <stdio.h>
#include <string.h>
char str1[201],str2[201],str3[402];
int p[201][201];
int z,len;
void dfs(int a,int b,int x)
{
if(z) return ;
if(p[a][b]) return ;
p[a][b] = 1;
if(x > len-1)
{
z = 1;
return ;
}
if(str1[a] == str3[x])
{
dfs(a+1,b,x+1);

}
if(str2[b] == str3[x])
{
dfs(a,b+1,x+1);
}
}
int main()
{
int num = 0,t;
scanf("%d%*c",&t);
while(t--)
{
scanf("%s%s%s",str1,str2,str3);
memset(p,0,sizeof(p));
num ++;
len = strlen(str3);
z = 0;
dfs(0,0,0);
printf("Data set %d: ",num);
if(z)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: