hdu 1501 DFS+记忆化搜索

不大明白啥叫记忆化搜索,但是PC学长说就相当于打表~不大懂= =。。。回头好好看一下

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1501

参考着崔老师的代码来的。

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 char s1[205],s2[205],s3[410];
 5 int len,count,vis[205][205],leap;
 6 void dfs(int a,int b,int c)
 7 {
 8     if(leap)
 9     return;
10     if(vis[a][b])
11     return;
12     vis[a][b] = 1;
13     if(c >= len-1)
14     {
15         leap = 1;
16         return;
17     }
18     if(s1[a] == s3[c])
19     dfs(a+1,b,c+1);
20     if(s2[b] == s3[c])
21     dfs(a,b+1,c+1);
22 }
23 int main()
24 {
25     int T;
26     count = 1;
27     scanf("%d",&T);
28     while(T--)
29     {
30         memset(s1,0,sizeof(s1));
31         memset(s2,0,sizeof(s2));
32         memset(s3,0,sizeof(s3));
33         memset(vis,0,sizeof(vis));
34         scanf("%s %s %s",s1,s2,s3);
35         leap  = 0;
36         len = strlen(s3);
37         dfs(0,0,0);
38 
39         if(leap)
40         printf("Data set %d: yes\n",count);
41         else
42         printf("Data set %d: no\n",count);
43         count++;
44     }
45     return 0;
46 }

 

posted @ 2012-08-01 22:18  某某。  阅读(192)  评论(0编辑  收藏  举报