Anagrams by Stack(进栈出栈问题)
堆栈操作序列如何产生字谜?有两种堆栈运算符序列可以将 TROT 转换为 TORT:
[
i i i i o o o o
i o i i o o i o
]
其中 i 代表 Push,o 代表 Pop。你的程序应该,给定的单词对产生堆栈操作序列,将第一个单词转换为第二个单词。
输入
输入将由几行输入组成。每对输入行的第一行被视为源词(不包括行尾字符)。每对的第二行(同样,不包括行尾字符)是目标词。输入的结尾由文件结尾标记。
对于每个输入对,您的程序应生成 i 和 o 的有效序列的排序列表,这些序列从源单词生成目标单词。每个列表应由
[
]
并且序列应按“字典顺序”打印。在每个序列中,每个 i 和 o 后跟一个空格,每个序列以新行结束。
过程
堆栈是一种数据存储和检索结构,允许进行两种操作:
#include<iostream>
#include<string>
#include<stack>
#include<algorithm>
using namespace std;
string s1, s2;
stack<int> s;
char result[200];
bool isSame(string s1, string s2) {if (s1.length() != s2.length()) return false;sort(s1.begin(), s1.end());sort(s2.begin(), s2.end());return s1 == s2;
}
void aStack(int i, int o) {if ((i + o) == 2 * s1.length()) {for (int k = 0; k < i + o; k++) {cout << result[k] << " ";}cout << endl;}if (i < s1.length()) {s.push(s1[i]);result[i + o] = 'i';aStack(i + 1, o);s.pop();}if (!s.empty() && s.top() == s2[o]) {char temp = s.top();s.pop();result[i + o] = 'o';aStack(i, o + 1);s.push(temp);}
}
int main() {while (cin >> s1 >> s2) {bool flag = true;if (!isSame(s1, s2)) {flag = false;}cout << "[" << endl;if(flag) aStack(0, 0);cout << "]" << endl;}return 0;
}
#include<iostream>
#include<string>
#include<stack>
#include<algorithm>
using namespace std;string s1, s2;
stack<int> s;
char result[200];bool isSame(string s1, string s2){if (s1.length() != s2.length()) return false;sort(s1.begin(), s1.end());sort(s2.begin(), s2.end());return s1 == s2;
}
void aStack(int i, int o){if ((i + o) == 2 * s1.length()){for (int k = 0; k < i + o; k++) {cout << result[k] << " ";}cout<< endl;}if (i<s1.length()) {s.push(s1[i]);result[i+o] = 'i';aStack(i + 1 ,o);s.pop();}if (!s.empty() && s.top() == s2[o]) {char temp = s.top();s.pop();result[i+o] = 'o';aStack(i, o+1);s.push(temp);}
}
int main() {while (cin >> s1 >>s2){bool flag = true;if (!isSame(s1, s2)){flag = false;}cout <<"[" <<endl;if(flag) aStack(0, 0);cout<< "]" <<endl;}return 0;
}
Anagrams by Stack(进栈出栈问题)相关推荐
- Java 进栈出栈的过程
我们使用自定义的方法 StringReverserThroughStack() 来实现进栈和出栈的详细过程. 完整代码 import java.io.IOException;public class ...
- js进栈出栈_JavaScript调用栈
1:基本概念 栈(stack):用来保存简单的数据字段. 堆(heap):用来保存栈中简单的数据字段对指针的引用. 队列:是一种先进先出的线性数据结构.函数的调用的进栈和出栈的顺序,遵循 先进后出 的 ...
- js进栈出栈_[js]数组栈和队列操作
写在前面 在项目中,对数组的操作还是比较常见的,有时候,我们需要模拟栈和队列的特性才能实现需求,这里记录一下这个知识点. 栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一 ...
- c语言堆栈基本代码入栈出栈_c语言的简单的进栈出栈
这个代码运行时只能输入4个以内的数有输出4个以上就没有输出了求大神看看#include#include#defineStack_Size50typedefstructSeqstack{intelem[ ...
- js进栈出栈_链栈及基本操作(包含入栈和出栈)详解
链栈,即用链表实现栈存储结构. 链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶:链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈底,如图 1 所示: 图 1 链 ...
- 简单实现顺序表示的栈与队列的进栈出栈创空栈入队出队创空队等算法
栈和队列是两种最重要的数据结构,也是两种最典型的抽象数据类型,应用非常的广泛. 目录 一.栈 一.空栈的创建 二.进栈 三.出栈 二.队列 一.创建空队列 二.队列的入队和出队 三.取队列头元素 一. ...
- C语言 数据结构 顺序栈的实现 进栈 出栈 初始化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.代码实现 前言 顺序栈是栈的顺序实现.顺序栈是指利用顺序存储结构实现的栈.采用地址连续的存储空间(数组)依次存储栈 ...
- js进栈出栈_JavaScript js调用堆栈(一)
当上述代码在浏览器中加载时,JavaScript 引擎会创建一个全局执行上下文并且将它推入当前的执行栈.当调用 first() 函数时,JavaScript 引擎为该函数创建了一个新的执行上下文并将其 ...
- 判断一个字符串是否为回文-链队(新建,进队,出队),链栈(新建,进栈,出栈)...
回文:字符对称排列的字符串,例如ABCBA 思路:根据队:先进先出和栈: 先进后出的原则,进行比较出队和出栈的字符是否相等.如果相等,则为回文. 创建控制台应用程序. 1 #region 字符节点类 ...
- 【数据结构入门】栈(Stack)的实现(定义、销毁、入栈、出栈等) | 图解数据结构,超详细哦~
文章目录 (1)前言 1)栈的概念 2)进栈出栈的形式 3)栈的存储结构 (2)栈的实现(顺序栈) 1)栈的定义 2)栈的初始化 3)栈的销毁 4)入栈 5)出栈 6)检测栈是否为空 7)获取栈中有效 ...
最新文章
- 元宇宙深度报告,共177页!
- SpiderData 2019年2月13日 DApp数据排行榜
- .NET 2.0 中使用Active Directory 应用程序模式 (ADAM)
- 【Linux】一步一步学Linux——shopt命令(214)
- 关于辅酶Q10的相关常识与选购要点(转)
- struts2+spring3+hibernate3+mysql简单登录实现
- 如何给ppt编辑页码_拒绝千篇一律:Word插入“侧边”页码,让文档别具一格!...
- WPF中制作立体效果的文字或LOGO图形
- InnoDB原理篇:Change Buffer是如何提升索引性能的?
- cvMat结构体详解
- ArcGIS数据生产与精细化制图之中国年降水量分布图的制作(转载)
- 安全模式解除android,手机安全模式怎么解除
- Vue 点击按钮,下载视频
- 使用OpenCV实现运动背景的重建
- Spire.Doc利用word样式读取word文字内容(.NET)
- Android】源码编译 ---zzz
- 百度知道与搜搜问问推广的优劣势
- Linux-看完这篇Linux基本的操作就会了(转)
- 轻松去除微博图片logo的方法
- 幼儿园的计算机一年级的教案,一年级活动教案
热门文章
- 数据恢复系列(4)~开源恢复工具
- ARM 和 RISC-V 公然开撕,GNOME 之父指责 ARM
- zwPython,字王集成式python开发平台,比pythonXY更强大、更方便。
- 监听listview item兼容于checkbox/textview/imageview
- DOTFUN XML Silverlight中文留言簿Beta V1.0 即将上线!
- ctf赛题上传一个php木马,文件上传的ctf_web题目【伪协议】
- 温故知新----css盒模型
- cocos android保存图片到相册,android平台 cocos2d-x 读取相册数据
- python 时分秒相加大于24h_在python中,将24小时加到负时间差上
- [原创]Linux系统启动过程分析