(step4.3.5)hdu 1501(Zipper——DFS)
题目大意:是给定3个字符串,问前两个是否能够组成第3个字符串。此题是个非常经典的dfs题.
解题思路:DFS
代码如下:有详细的注释
/*
* 1501_2.cpp
*
* Created on: 2013年8月17日
* Author: Administrator
*/ #include <iostream>
using namespace std; char str1[201], str2[201], str3[401];
int len1, len2, len3;
bool flag;
bool hash[201][201]; /**
* str1、str2、str3分别用来保存第1、2、3个字符串
* len1、len2、len3分别是第1、2、3个字符串的长度
* flag : 判断是否有解
* hash[][] :判断是否已经访问过
*/
void dfs(int a, int b, int c) {
if (flag) {
return;
} if (c == len3) {
flag = true;
return;
} if (hash[a][b]) {
return;
} hash[a][b] = true;//这个千万不要漏了...表示这种组合已经试过
if (str1[a] == str3[c]) {//如果str1第a个位置上的字符与str2第c个位置上的字符相等
dfs(a + 1, b, c + 1);
} if (str2[b] == str3[c]) {//如果str2第b个位置上的字符和str2第c个位置上的字符相等
dfs(a, b + 1, c + 1);
}
} int main() {
int t; scanf("%d", &t);
int count = 1;
int i;
for( i = 1 ;i <= t ; ++i){
flag = false;
memset(hash, 0, sizeof(hash));
scanf("%s%s%s", str1, str2, str3); len1 = strlen(str1);
len2 = strlen(str2);
len3 = strlen(str3);
if (len1 + len2 != len3) {
printf("Data set %d: no\n",count++);
continue;
} dfs(0, 0, 0);
printf("Data set %d: %s\n", count++,flag?"yes":"no"); }
}
(step4.3.5)hdu 1501(Zipper——DFS)的更多相关文章
- hdu 1501 Zipper dfs
题目链接: HDU - 1501 Given three strings, you are to determine whether the third string can be formed by ...
- HDU 1501 Zipper 【DFS+剪枝】
HDU 1501 Zipper [DFS+剪枝] Problem Description Given three strings, you are to determine whether the t ...
- HDU 1501 Zipper(DP,DFS)
意甲冠军 是否可以由串来推断a,b字符不改变其相对为了获取字符串的组合c 本题有两种解法 DP或者DFS 考虑DP 令d[i][j]表示是否能有a的前i个字符和b的前j个字符组合得到c的前i+j ...
- HDU 1501 Zipper(DFS)
Problem Description Given three strings, you are to determine whether the third string can be formed ...
- hdu 1501 Zipper
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1501 思路:题目要求第三个串由前两个组成,且顺序不能够打乱,搜索大法好 #include<cstdi ...
- HDU 1501 Zipper 动态规划经典
Zipper Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU 1501 Zipper 字符串
题目大意:输入有一个T,表示有T组测试数据,然后输入三个字符串,问第三个字符串能否由第一个和第二个字符串拼接而来,拼接的规则是第一个和第二个字符串在新的字符串中的前后的相对的顺序不能改变,问第三个字符 ...
- hdu 1501 Zipper(DP)
题意: 给三个字符串str1.str2.str3 问str1和str2能否拼接成str3.(拼接的意思可以互相穿插) 能输出YES否则输出NO. 思路: 如果str3是由str1和str2拼接而成,s ...
- HDOJ 1501 Zipper 【DP】【DFS+剪枝】
HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
随机推荐
- Windows7 sp1 64位下安装配置eclipse+jdk+CDT+minGW
需要的工具: jdk-7u11-windows-x64.exe eclipse-SDK-4.2.2-win32-x86_64.zip cdt-master-8.1.2.zip mingw-get-i ...
- MYSQL 配置slave故障
之前为主从配置,后来分割成2个单实例.现在环境需要,重新配置为主从,之前参数都已配置好,直接启动,如下: mysql> change master to master_host='192.168 ...
- Another 20 Docs and Guides for Front-End Developers
http://www.sitepoint.com/another-20-docs-guides-front-end-developers/?utm_medium=email&utm_campa ...
- Get current time and date on Android
You could use: Calendar c =Calendar.getInstance();int seconds = c.get(Calendar.SECOND); There are pl ...
- VBS基础篇 - 数组
数组变量:有时需要向一个单一的变量赋于多个值,那么您可以创建一个可包含一系列值的变量,这种变量被称为数组. '静态数组 ) a()="George" a()="john& ...
- android退出登陆后,清空之前所有的activity,进入登陆主界面
如题: android退出登陆后,清空之前所有的activity,进入登陆主界面 在退出登陆时只需要增加一个intent标志 Intent intent_login = new Intent(); i ...
- C# ASP.NET系统缓存全解析
原文:http://blog.csdn.net/wyxhd2008/article/details/8076105 目录(?)[-] 系统缓存的概述 页面输出缓存 页面局部缓存 文件缓存依赖 数据库缓 ...
- Useful related java API for Android
Language_suport and Other Language-Oriented API: strings,exceptions, threads, #java.lang.* offers th ...
- 动态更新Toolbar Menu以及Menu中同时显示文字和图标
动态更新Toolbar Menu以及Menu中同时显示文字和图标 我们经常会有这样的需求,在切换Fragment或者点击某个按钮后动态更新Toolbar上Menu项.但是onCreateOptions ...
- 【BZOJ】【3052】【WC2013】糖果公园
树分块 老早(大约一个月以前?)就听说这道神题了……orz rausen 一直拖到现在才做……发现还是不会呢= = 只好也去Orz了Hzwer和zky http://hzwer.com/5250.ht ...