HDU 1501 Zipper 记忆化搜索
来源:互联网 发布:电话轰炸机软件下载 编辑:程序博客网 时间:2024/05/28 15:50
点击打开链接
题意:给出三个字符串,判断第三个字符串是否是由前两个字符串在本身顺序不变的情况下组成的。
思路记忆化搜索。因为存在着两种枚举状态 1.if(s1[x]==s[z])
2.if(s2[y]==s[z])
通过标记数组记录是否已经访问过此遍历途径了来进行,减少时间的消耗
///访问过就没必要再访问一遍了,因为路径以前已经走过一次了,再走也是重复。
#include<bits/stdc++.h>using namespace std;char s1[500],s2[500],s[500],flag;int vis[1100][1100];void DFS(int x,int y,int z){ if(flag) return ; if(s1[x]=='\0'&&s2[y]=='\0'&&s[z]=='\0') { flag=1; return ; } if(s1[x]!=s[z]&&s2[y]!=s[z]) ///不符合条件 return ; if(vis[x][y]) ///访问过就无需再访问了 return ; vis[x][y]=1; ///表示访问过 x,y 位置,下次再经过x,y位置之后就没必要继续重复以前的操作了 /// (即没必要继续进行下面的操作(下面的操作再进行就重复了))。 if(s1[x]==s[z]) DFS(x+1,y,z+1); if(s2[y]==s[z]) DFS(x,y+1,z+1);}int main(){ int n; scanf("%d",&n); { for(int i=0;i<n;i++) { flag=0; scanf("%s%s%s",s1,s2,s); printf("Data set %d:",i+1); memset(vis,0,sizeof(vis)); DFS(0,0,0); if(flag==1) printf(" yes\n"); else printf(" no\n"); } } return 0;}
0 0
- hdu 1501 Zipper(记忆化搜索)
- HDU-1501 Zipper DFS+记忆化搜索
- 【记忆化搜索】HDU-1501 Zipper
- hdu 1501 Zipper 记忆化搜索
- HDU 1501 Zipper 记忆化搜索
- HDU 1501 & POJ 2192 Zipper(dp记忆化搜索)
- hdu 1501 Zipper (dfs+记忆化搜索)
- POJ 2192 && HDU 1501 Zipper (记忆化搜索)
- hdu 1501 Zipper (记忆优化搜索)
- Zipper记忆化搜索
- HDOJ 1501 Zipper 记忆化搜索
- 【DFS(记忆化)】hdu 1501 Zipper
- hdu 1501 Zipper(记忆化DFS)
- HDU 1501 Zipper & ACM俱乐部 2604 单词混合【记忆化搜索】
- HDU1501 Zipper(DFS+记忆化搜索)
- hdu1501 zipper【记忆化搜索】【动态规划】
- POJ2192:Zipper(记忆化搜索)
- 暑期dp46道(26)HDOJ 1501 Zipper dfs+记忆化搜索
- 里程碑:SpaceX首次成功实现海上回收火箭
- 【VS开发】这就是COM组件
- STL学习笔记— —容器map和multimap
- STL set和priority_queue使用方法
- python操作mysql
- HDU 1501 Zipper 记忆化搜索
- nmap帮助文档
- android手机连上电脑热点,如何获得电脑ip地址?
- nyoj 714 Card Trick
- Laravel学渣笔记(一) Form表单
- 关于java的JIT知识
- Codeforces 630L Cracking the Code
- 关于Audio标签的src路径包含中文时音频无法的问题
- 级联删除中由排序引起的deleted object would be re-saved by cascade 问题