(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 ...
随机推荐
- 系统架构师JD
#################################################################################################### ...
- 【python】 入门 - 函数式编程
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8b ...
- advance 模板 怎么生成module
advance 模板 怎么生成module namespace写什么如果是前台呢就是 frontend\modules\modulename\Module@我叫红领巾 module id有什么用bak ...
- 网络笔记01-2 scoket
scoket: 1.socket /** 第一个参数(domain): 表示用什么协议 AF_INET 为IPV4开发 第二个参数(type): 表示scoket为什么类型SOCK_STREAM为TC ...
- C# testJsonAsXMLNodeAttribute - XML& json & Collections - XmlNode, XmlElement, XmlAttribute,Dictionary,List
testJsonAsXMLNodeAttribute using Newtonsoft.Json; using System; using System.Collections.Generic; us ...
- shell 学习基地
http://blog.csdn.net/column/details/shell-daily-study.html?&page=2
- 使用node的http模块实现爬虫功能,并把爬到的数据存入mongondb
刚开始使用http中间件做爬虫其实蛮多坑的,最主要的坑就是编码问题,有很多中文网站的采用的gb2313的编码方式,这个在爬到的报文解析就很蛋碎, 因为http中间件对utf-8支持的比较好,所以针对这 ...
- 【POJ】【2068】Nim
博弈论/DP 这是Nim?这不是巴什博奕的变形吗…… 我也不会捉啊,不过一看最多只有20个人,每人最多拿16个石子,总共只有8196-1个石子,范围好像挺小的,嗯目测暴力可做. so,记忆化搜索直接水 ...
- SQL Server 之 事务隔离级别
SET TRANSACTION ISOLATION LEVEL xxx -- 每次设置只针对当前事务块 xxx 取值: READ UNCOMMITTED READ COMMITTED REPEATA ...
- js String Trim函数
<javascript> String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g,"& ...