题目大意:

就是通过一个栈进行字母入栈出栈得到想要的字符,把所有可能的方式全部输出

自己写的方法一开始一直不能过,后来参考了别人的方法,写出来的比较简单的代码

这段代码更有回溯的感觉,自己后来又把自己原来想法的代码写了一遍,终于写出来了,不过有点让人头晕

 #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回溯的更多相关文章

  1. 素数环(dfs+回溯)

    题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ...

  2. NOJ 1074 Hey Judge(DFS回溯)

    Problem 1074: Hey Judge Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit interger IO format: ...

  3. HDU 1016 Prime Ring Problem(经典DFS+回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  4. HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)

    哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. HDU1016 Prime Ring Problem(DFS回溯)

    Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  6. uva 193 Graph Coloring(图染色 dfs回溯)

    Description You are to write a program that tries to find an optimal coloring for a given graph. Col ...

  7. P1074 靶形数独 dfs回溯法

    题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ...

  8. 剪格子---(dfs回溯)

    如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以 ...

  9. 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯

      算法提高 8皇后·改   时间限制:1.0s   内存限制:256.0MB      问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ...

随机推荐

  1. 水题 Codeforces Beta Round #70 (Div. 2) A. Haiku

    题目传送门 /* 水题:三个字符串判断每个是否有相应的元音字母,YES/NO 下午网速巨慢:( */ #include <cstdio> #include <cstring> ...

  2. 题解报告:hdu1995汉诺塔V(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1995 Problem Description 用1,2,...,n表示n个盘子,称为1号盘,2号盘,. ...

  3. ACM_送气球(规律题)

    送气球 Time Limit: 2000/1000ms (Java/Others) Problem Description: 为了奖励近段时间辛苦刷题的ACMer,会长决定给正在机房刷题的他们送气球. ...

  4. 鼠标适配器Adapter

    先来看看概念: 现在我们要写一个这样的东西,就是一个窗口,然后鼠标点一下就有一个小圆点,like this: 来我们来看代码: import java.awt.*; import java.util. ...

  5. JDK集合框架--ArrayList

    ArrayList,从类名就可以看出来,这是由数组实现的List,即内部是用数组保存元素的有序集合.先看看主要的成员变量,比较简单: public class ArrayList<E> e ...

  6. 深入学习数据结构之bitmap(四)

    Bitmap,今天我们来分析一下bitmap的实现原理以及它的使用场景. 一.使用场景: 1.对于大量数据(几千个数据的就不要在废话了),且无重复或者可以忽略重复的数字.为啥这里要强调无重复,因为在b ...

  7. 用nowrap实现div内的元素不换行

    在编写自定义插件my-slider的过程中,发现无论float还是inline-block均不能保证div内的内容不换行(这两个属性在内容超出容器尺寸后,均将剩余内容做换行处理),在浏览器内比较了自己 ...

  8. 短视频SDK在广电系统的解决方案

    锐动视频编辑SDK集手机视频拍摄和视频剪辑主要功能于一体,同时包含手机端视频配音配乐,字幕特效,滤镜,转场特效等各种功能,全方位满足开发者的需求,并可以快速植入到APP中. 手机端的摄像头录制和直播功 ...

  9. apache设置无缓存

    打开httpd.conf 开启扩展 确保开启 LoadModule headers_module modules/mod_headers.so 添加配置项 并添加以下配置,跟据文件类型来让浏览器每次都 ...

  10. SQL Server 零散笔记

    排序显示行号 select Row_Number() over(order by Code) as RowNumber,ID,Code,Name from CBO_ItemMaster 不排序显示行号 ...