题目大意:是给定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. OSM 中国数据(每天都在更新)

    http://download.geofabrik.de/asia/china.html

  2. SpringMVC Cache注解+Redis

    依赖jar包:Xml代码  收藏代码 <!-- redis -->              <dependency>                  <groupId ...

  3. iOS 下拉菜单 FFDropDownMenu自定义下拉菜单样式实战-b

    Demo地址:https://github.com/chenfanfang/CollectionsOfExampleFFDropDownMenu框架地址:https://github.com/chen ...

  4. ListView防止滑动变色的小技巧

    listview滑动时会变成白色,如果背景色不是白色的话可以通过设置setCacheColorHint(Color.TRANSPARENT);来避免变色,.对应的xml也可以进行设置.

  5. ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

    引子: 本项目在老电脑上用的是oracle10g,换新电脑装的是oracle11g,但运行项目本没有什么关系,本来说创建个用户,用PLSQL手工导入数据,再改几下配置文件即可跑起来--但实际启动中遇到 ...

  6. [转载]C#获取本机IPv4地址

    C#获取本机IP地址在C#1.0之后都使用下面的这种形式: IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipa=i ...

  7. asynDBCenter(修改)

    asynDBCenter加入数据库心跳,其实是没有找到更好的方法,看看和以前有什么不同 mongo数据库重练,暂时没有找到好办法,只能这样定时访问 bool asynDBCenter::init(bo ...

  8. How to use Mac Terminal

    Mac OS X 启用超级用户的方法Root user,又名超级用户,是一个权力最高的Unix 账户,Root 的账户能在整个系统里任何部份进行任何“操作”,包括:拷贝档案.移动/移除档案.执行程序等 ...

  9. hdoj 2112 HDU Today

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2112 分析:多了一个地方的条件,用map来映射地点编号,Dijkstra求解即可 //2013-10- ...

  10. android音乐播放器开发教程

    android音乐播放器开发教程 Android扫描sd卡和系统文件 Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能 android操作sdcard中的多媒体文件——音乐列表 ...