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的主要内容,如果未能解决你的问题,请参考以下文章