不大明白啥叫记忆化搜索,但是PC学长说就相当于打表~不大懂= =。。。回头好好看一下
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1501
参考着崔老师的代码来的。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }