HDU 1501 Zipper(DFS)
来源:互联网 发布:离线语音识别算法2017 编辑:程序博客网 时间:2024/06/05 19:08
HDU 1501 Zipper(DFS)
http://acm.hdu.edu.cn/showproblem.php?pid=1501
题意:
给你3个字符串A,B和C.问你由字符串A和B的字符能否构成C字符串.你可以任意组合A和B的字符,但是A中或B中所有字符间的相对位置不能改变.且C字符的个数=A字符个数+B字符个数.
分析:
直接DFS构找出C字符即可,对于当前DFS,我们保存当前正在选取A中的第i个字符和B中的第j个字符,然后往下DFS即可.
AC代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=205;char A[maxn],B[maxn],C[maxn*2]; //错误1,这里C的数组是两倍长度bool vis[maxn][maxn]; //vis数组用来标记我们之前是否考虑过a,b的情况bool dfs(int c,int a,int b){ if(C[c]==0) return true; if(vis[a][b]) return false; vis[a][b]=1; if(C[c]==A[a]) { if(dfs(c+1,a+1,b)) return true; } if(C[c]==B[b]) { if(dfs(c+1,a,b+1)) return true; } return false;}int main(){ int T; scanf("%d",&T); for(int kase=1;kase<=T;kase++) { memset(vis,0,sizeof(vis)); scanf("%s%s%s",A,B,C); if(dfs(0,0,0)) printf("Data set %d: yes\n",kase); else printf("Data set %d: no\n",kase); } return 0;}
0 0
- hdu 1501 Zipper (DFS)
- HDU 1501 Zipper(DFS)
- HDU 1501 Zipper 【DFS】
- HDU 1501 Zipper(DFS)
- hdu 1501 Zipper(DFS)
- Hdu 1501 Zipper【dfs】
- HDU 1501 Zipper (DFS)
- HDU 1501 Zipper(DFS)
- HDU 1501 Zipper(DP,DFS)
- HDU 1501 Zipper(DP,DFS)
- HDU 1501 Zipper (DFS)
- hdu 1501 Zipper(dfs)
- 【DFS(记忆化)】hdu 1501 Zipper
- hdu 1501 Zipper(记忆化DFS)
- HDU-1501 Zipper DFS+记忆化搜索
- Zipper(HDU 1501) —— DFS
- hdu 1501 Zipper(dfs或dp)
- HDU 1501 Zipper (DFS+剪枝做法)
- Android APK反编译详解(附图)
- android开源项目和框架
- window 下安装oracle 客户端配置以及sys密码 重置
- 第十四周周报
- linux常用的几个命令
- HDU 1501 Zipper(DFS)
- 为什么String类是不可变的?
- .net和Jsonp实现资源跨域
- 程序员必须进行的10项投资
- 中国空气质量分析
- iOS本地化
- java调用linux命令 传递多个参数和通配符的问题
- virtualbox下ubuntu访问主机共享文件夹
- JavaScript 题目一,转自汤姆大叔的博客