Zipper记忆化搜索

来源:互联网 发布:七彩网络下载 编辑:程序博客网 时间:2024/06/06 05:01
http://acm.hdu.edu.cn/showproblem.php?pid=1501
#include<iostream>
#include<string>
using namespace std;
char a[210],b[210],c[410];
int vis[210][210],k;
void dfs(int x,int y,int z)
{
 if(k==1)
 return;
 if(z==strlen(c))
 {
  k=1;
  return;
 }
 if(vis[x][y])
 return;
 vis[x][y]=1;
 if(a[x]==c[z])
 dfs(x+1,y,z+1);
 if(b[y]==c[z])
 dfs(x,y+1,z+1);
}
int main()
{
 int n;
 cin>>n;
 for(int i=1;i<=n;i++)
 {
  cin>>a>>b>>c;
  memset(vis,0,sizeof(vis));
  k=0;
  dfs(0,0,0);
  cout<<"Data set "<<i<<": ";
  if(k==1)
  cout<<"yes\n";
  else
  cout<<"no\n";
 }
 return 0;
}

0 0
原创粉丝点击