题目大意:是给定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)的更多相关文章

  1. hdu 1501 Zipper dfs

    题目链接: HDU - 1501 Given three strings, you are to determine whether the third string can be formed by ...

  2. HDU 1501 Zipper 【DFS+剪枝】

    HDU 1501 Zipper [DFS+剪枝] Problem Description Given three strings, you are to determine whether the t ...

  3. HDU 1501 Zipper(DP,DFS)

    意甲冠军  是否可以由串来推断a,b字符不改变其相对为了获取字符串的组合c 本题有两种解法  DP或者DFS 考虑DP  令d[i][j]表示是否能有a的前i个字符和b的前j个字符组合得到c的前i+j ...

  4. HDU 1501 Zipper(DFS)

    Problem Description Given three strings, you are to determine whether the third string can be formed ...

  5. hdu 1501 Zipper

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1501 思路:题目要求第三个串由前两个组成,且顺序不能够打乱,搜索大法好 #include<cstdi ...

  6. HDU 1501 Zipper 动态规划经典

    Zipper Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  7. HDU 1501 Zipper 字符串

    题目大意:输入有一个T,表示有T组测试数据,然后输入三个字符串,问第三个字符串能否由第一个和第二个字符串拼接而来,拼接的规则是第一个和第二个字符串在新的字符串中的前后的相对的顺序不能改变,问第三个字符 ...

  8. hdu 1501 Zipper(DP)

    题意: 给三个字符串str1.str2.str3 问str1和str2能否拼接成str3.(拼接的意思可以互相穿插) 能输出YES否则输出NO. 思路: 如果str3是由str1和str2拼接而成,s ...

  9. HDOJ 1501 Zipper 【DP】【DFS+剪枝】

    HDOJ 1501 Zipper [DP][DFS+剪枝] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...

随机推荐

  1. Python流程控制

    if语句: --Pyhon中的IF跟其他语言类似,if包含一个逻辑表达式,使用表达式比较,在比较的结果的基础上做出判断 --if expression: statement(s) 注意:Python使 ...

  2. [原创]CentOS6.4编译安装Facebook的folly库(gcc4.8.1boost1.5.3)

      Folly: Facebook Open-souce LibrarY,Facebook开源的一个基础组件库,据说在大规模的场景中性能较高.目前因为自己负责的系统有几个地方性能较差,因此特意找来看看 ...

  3. 【http】http/1.1 八种请求方式

    OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法.也可以利用向Web服务器发送'*'的请求来测试服务器的功能性. HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回 ...

  4. 你用什么方法检查 PHP 脚本的执行效率(通常是脚本执行时间)和数据库 SQL 的效率(通常是数据库 Query 时间), 并定位和分析脚本执行和数据库查询的瓶颈所在?

    php: 一般是在你要检查的代码开头记录一个时间,结尾记录一个时间.取差值, 数据库SQL的效率    sql的explain(mysql),启用slow query log记录慢查询.   通常还要 ...

  5. android编程常见问题-No Launcher activity found!

    新手编程常见的问题: 问题表现: console提示:No Launcher activity found! The launch will only sync the application pac ...

  6. Eclipse 环境安装和配置优化

    1.下载相应的eclipse版本.    官方下载地址:http://www.eclipse.org/downloads/    juno版本的64位下载地址:http://www.eclipse.o ...

  7. [转载]淘宝API调用 申请 获取session key

    http://www.cnblogs.com/zknu/archive/2013/06/14/3135527.html 在调用淘宝的API时,我们都会用到appkey,appsecret,appses ...

  8. uva 10651

    DP  主要是位运算的运用  因为只有12位 用一个数字代表一种装态 记忆化搜索 节约时间 /***************************************************** ...

  9. PHP7 扩展之自动化测试

    在安装 PHP7 及各种扩展的过程中,如果你是用源码安装,会注意到在 make 成功之后总会有一句提示:Don't forget to run 'make test'. 这个 make test 就是 ...

  10. Python-aiohttp百万并发

    http://www.aikaiyuan.com/10935.html 本文将测试python aiohttp的极限,同时测试其性能表现,以分钟发起请求数作为指标.大家都知道,当应用到网络操作时,异步 ...