hdu1501 记忆化搜索
生活随笔
收集整理的這篇文章主要介紹了
hdu1501 记忆化搜索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
? ? ? 給你三個字符串,問你前兩個能不能拼成第三個串。
思路:
? ? ? 給你三個字符串,問你前兩個能不能拼成第三個串。
思路:
? ? ? 直接記憶化神搜就行,思路水,看下代碼就知道了。這個題目我感覺最大公共子序列dp的作法是錯的,雖然有人ac了,隨便一組數據比如 abc abc abccba。
#include<stdio.h> #include<string.h> char c1[222] ,c2[222] ,c3[444]; int mark[222][222]; int ok ,l1 ,l2 ,l3;void DFS(int n1 ,int n2 ,int n3) {if(n3 == l3 + 1){ok = 1;return ;}if(mark[n1][n2]) return;mark[n1][n2] = 1;if(n1 <= l1 && c3[n3] == c1[n1] && !ok){DFS(n1 + 1 ,n2 ,n3 + 1);}if(n2 <= l2 && c3[n3] == c2[n2] && !ok){ DFS(n1 ,n2 + 1 ,n3 + 1);} }int main () {int t ,cas = 1;scanf("%d" ,&t);while(t--){scanf("%s %s %s" ,c1 ,c2 ,c3);l1 = strlen(c1) - 1;l2 = strlen(c2) - 1;l3 = strlen(c3) - 1;if(l1 + 1 + l2 + 1 != l3 + 1){printf("Data set %d: no\n" ,cas ++);continue;} ok = 0;memset(mark ,0 ,sizeof(mark));DFS(0 ,0 ,0);if(ok) printf("Data set %d: yes\n" ,cas ++);else printf("Data set %d: no\n" ,cas ++);}return 0; }
總結
以上是生活随笔為你收集整理的hdu1501 记忆化搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu1316 大数
- 下一篇: hdu4067 费用流(混合欧拉的宽展和