ZOJ1004 && HDU1515 dfs回溯
题目大意:
就是通过一个栈进行字母入栈出栈得到想要的字符,把所有可能的方式全部输出
自己写的方法一开始一直不能过,后来参考了别人的方法,写出来的比较简单的代码
这段代码更有回溯的感觉,自己后来又把自己原来想法的代码写了一遍,终于写出来了,不过有点让人头晕
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;
stack<char> s;
char str1[],str2[],io[];
int n,m;
void dfs(int x,int y,int cnt)
{
if(y==m){
// printf("%c ",io[0]);
for(int i=;i<cnt;i++)
printf("%c ",io[i]);
puts("");
return;
} if(x<n){
io[cnt]='i';
s.push(str1[x]);
dfs(x+,y,cnt+);
s.pop();
} if(!s.empty() && s.top() == str2[y]){
io[cnt]='o';
char a = s.top();
s.pop();
dfs(x,y+,cnt+);
s.push(a);
}
}
int main()
{
while(~scanf("%s%s",str1,str2)){
puts("["); n=strlen(str1);
m=strlen(str2);
//printf("%d %d\n",n,m);
while(!s.empty())
s.pop(); dfs(,,); puts("]");
}
return ;
}
不断传入出栈的值和对应的str2上的字符进行比较,只有一只匹配正确才继续,若匹配成功最后一个字符,就输出io[]保存的过程字符
k表示保存了k个过程符,x表示str1入栈了x个字符,y表示比较到了str2的第y个字符
自己写的过程中因为想不到上面那么好的思路,就有点乱,防止数组越界,只能不断加各种限制,自己的思路想想应该还是只有自己看得懂吧~~
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std; stack<char> s;
char str1[] , str2[] , io[];
int n,m; void dfs(char a,int k,int x,int y)
{
if(y>){
if(a != str2[y-])
return; else if(y == m){
for(int i=;i<k;i++)
printf("%c ",io[i]);
puts("");
return;
}
} if(y>=m)
return; if(s.empty()){
if(x>=n)
return;
io[k] = 'i';
s.push(str1[x]);
dfs(a,k+,x+,y);
s.pop();
}
else{
if(x<n){
io[k] = 'i';
s.push(str1[x]);
dfs(a,k+,x+,y);
s.pop();
} io[k]='o';
char b = s.top();
s.pop();
dfs(b,k+,x,y+);
s.push(b);
}
} int main()
{
while(~scanf("%s%s",str1,str2)){
puts("["); n=strlen(str1);
m=strlen(str2);
//printf("%d %d\n",n,m);
while(!s.empty())
s.pop(); dfs('a',,,); puts("]");
}
return ;
}
ZOJ1004 && HDU1515 dfs回溯的更多相关文章
- 素数环(dfs+回溯)
		题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ... 
- NOJ 1074 Hey Judge(DFS回溯)
		Problem 1074: Hey Judge Time Limits: 1000 MS Memory Limits: 65536 KB 64-bit interger IO format: ... 
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
		Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ... 
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
		哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ... 
- HDU1016 Prime Ring Problem(DFS回溯)
		Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ... 
- uva 193 Graph Coloring(图染色 dfs回溯)
		Description You are to write a program that tries to find an optimal coloring for a given graph. Col ... 
- P1074 靶形数独  dfs回溯法
		题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ... 
- 剪格子---(dfs回溯)
		如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以 ... 
- 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯
		算法提高 8皇后·改 时间限制:1.0s 内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ... 
随机推荐
- Vue自定义过滤器格式化数字三位加一逗号
			<template> <div class="index-compont"> <div class="totalCount"> ... 
- 总结用CoreText绘制文本时遇到的问题以及解决办法
			关于CoreText不做解释.用的人自然知道这个是干什么的. 功能非常强大,可以绘制文本,图片等. 这次用的Xcode7.0的版本.所以之前很多方法,现在不能用.也不是不能用,就是有黄色警告很不爽. ... 
- 220 Contains Duplicate III 存在重复 III
			给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使 nums [i] 和 nums [j] 的绝对差值最大为 t,并且 i 和 j 之间的绝对差值最大为 k. 详见:https://le ... 
- MVP架构模式
			概念解释 MVP是Model(数据) View(界面) Presenter(表现层)的缩写,它是MVC架构的变种,强调Model和View的最大化解耦和单一职责原则 Model:负责数据的来源和封装, ... 
- 关于springMVC传参问题
			今天写项目,碰到一个以前灭有注意到的问题,一般情况下使用springMVC @Controller注解之后,被此注解标记的方法的参数名只需要跟页面表单的标签的name的值相同即可拿到页面的值,但是如果 ... 
- CF916C Jamie and Interesting Graph
			思路:构造 实现: #include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n ... 
- [BZOJ1798][AHOI2009]Seq维护序列 线段树
			题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1798 一眼看过去线段树,事实上就是线段树.对于乘和加的两个标记,我们可以规定一个顺序,比如 ... 
- 移动端rem
			手机有很多尺寸的型号.使用rem来做为大小单位可以达到兼容的目的. 方法一:js测量手机尺寸,设置font-size:为手机屏幕width /10 + ‘px’.即10rem 为手机屏幕width. ... 
- .Net中的强名称(Strong Name)
			我在CSDN上的文章, 转载与此: .Net中的强名称(Strong Name) http://blog.csdn.net/Anor/article/details/3649646 
- 习水医院12C RAC 数据库安装文档
			环境介绍 OS: Oracle Enterprise Linux 6.4 (For RAC Nodes) DB: GI and Database 12.1.0.2 所需介质 p17694377 ... 
