不大明白啥叫记忆化搜索,但是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 }