HDU1501 dfs

Posted ---学习ing---

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU1501 dfs相关的知识,希望对你有一定的参考价值。

像这样有维度的一定要记忆化啊。。。。。。。。。。。

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<memory.h>
#include<algorithm>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
char a[300],b[300],c[600];
int L1,L2,L3;
int vis[600][600];
bool _find(int pos,int s1,int s3)
{    
    if(pos==1&&a[s1]!=c[s3]) return false;
    if(pos==2&&b[s3-s1]!=c[s3]) return false;
    if(s3==L3) return true;
    if(s1+1<=L1&&!vis[s1+1][s3+1]&&_find(1,s1+1,s3+1))return true;   
    if(s3+1-s1<=L2&&!vis[s1][s3+1]&&_find(2,s1,s3+1)) return true;
    vis[s1][s3]=1;/*加这句就爆了,而且加在这里是表示无论是a到s3还是b到s3都搜索过了 */ 
    return false;
}
int main()
{
    int T,Case=0;
    scanf("%d",&T);
    while(T--){
        bool flag=false;
        memset(vis,0,sizeof(vis));
        printf("Data set %d: ",++Case);
        scanf("%s%s%s",a+1,b+1,c+1);
        L1=strlen(a+1);L2=strlen(b+1);L3=strlen(c+1);
        if(a[1]==c[1]&&_find(1,1,1))
            flag=true;
        if(b[1]==c[1]&&_find(2,0,1))
            flag=true;
        if(flag) printf("yes\n");
        else printf("no\n");
    }
    return 0;
} 

 

以上是关于HDU1501 dfs的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1501 Zipper(dfs)

HDU1501 dfs

hdu1501&amp;&amp;poj2192 Zipper(DFS)

hdu1501 Zipper[简单DP]

HDU 1501 Zipper

[BZOJ1501][NOI2005]智慧珠游戏