铁轨问题 判断是否为出栈顺序
#include <cstdio>
#include <stack>
using namespace std;
const int MAX=1000+10;
int target[MAX];
stack<int> s; int main()
{ int n; printf("请输入火车的车厢数:"); while(scanf("%d",&n)==1) { int i; printf("请输入火车从B出站的顺序:"); for(i=1;i<=n;i++) scanf("%d",&target[i]); int A=1,B=1,ok=0; while(B<=n) { if(A==target[B]){ A++; B++; }else if(!s.empty()&&s.top()==target[B]){ s.pop(); B++; }else if(A<=n) { s.push(A++); }else{ ok=1; break; } } printf("可以按此顺序出站:%s\n",ok?"no":"yes"); printf("请输入火车的车厢数:"); } return 0;
}
某城市有一个火车站,铁轨铺设如图所示,有n节车厢从A方向驶入车站,按进站顺序编号为1至n。你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出车站。例如:出站顺序(5,4,1,2,3)是不可能的,而(5,4,3,2,1)是可能的。对于每节车厢,一旦从A移入C,就不能再回到A了;一旦从C移入B,就不能回到C了。换句话说,在任意时刻,只有两种选择A->C和C->B。
现在给你一种1到n的排列,请你判断是否是题目描述的一种可能,如果是请输出yes,否则输出no
铁轨问题 判断是否为出栈顺序相关推荐
- 【LeetCode946】判断可能的出栈顺序
[LeetCode946]判断可能的出栈顺序 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某 ...
- 判断出栈顺序的合法性(面试题)
判断出栈顺序的合法性 "栈"是一种限制性线性表,是将线性表的插入.删除操作限制为仅在表的一端进行,一般将能够插入.删除的一端称为栈顶,表的另一端称为栈底.当栈中没有元素时称为空栈. ...
- 数据结构----出栈顺序有效性的判断
1 问题描述 问题1:若元素 a,b,c,d,e,f 顺序进栈, 则不准许的出栈顺序是 A. d,c,e,b,f,a B. c,b,d,a,e,f C. b,c,a,e,f,d D. ...
- 【PAT甲】1051 Pop Sequence (25分)判断出栈顺序的合法性
problem 1051 Pop Sequence (25分) Given a stack which can keep M numbers at most. Push N numbers in th ...
- 判断栈的出栈顺序是否正确
一 问题描述: 两个数组pPush和pPop分别存储了压栈序列和出栈序列,如何判断出栈序列是否正确,假设元素不重复. 需要实现的函数: bool isStackOutRight(i ...
- 根据入栈顺序判断出栈顺序的合法性
这道题不管是面试还是笔试的选择题都非常爱出的一道题 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4 ...
- java判断出栈顺序,java判断出栈顺序是否正确
java判断出栈顺序是否正确 我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或 ...
- 判断出栈顺序是否正确
先说一下题目: 假设有一个栈S,每次我们可以把序列A(含N个元素)中的第一个元素移入栈S,也可以是从栈顶弹出一个元素放入出栈序列B.这 样,经过N次入栈和出栈操作后,我们可以得到一个出栈序列B. 现在 ...
- 判断出栈顺序合法性的两种方法
文章目录 今天偶然看到一个面试题, 题目是这样的: 给我们两个序列,第一个序列表示栈的压入顺序,然后让判断第二个序列是不是是否是该栈的弹出序列 现设第一个序列为[1,2,3,4,5],第二个序列为[3 ...
最新文章
- 随机森林为何要有放回抽样
- 吴恩达 coursera ML 第十一课总结+作业答案
- python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
- 深入理解Java内存模型(七)——总结
- python为什么需要编辑器_Python是个什么鬼?为什么设计大牛都在学它?!
- lenovo Win10 安装 Androd Studio 新版本编程开发的软件
- 30个提高Web程序执行效率的好经验
- 红米手机4X获得Root权限的流程
- MyBatis14 缓存
- python自然语言处理学习笔记一
- 虚幻4--UE4是什么?
- 重庆APP开发价格费用如何计算?
- uniapp 评价应用_uniapp打开应用市场(APP端)
- 互联网券商证券公司网上开户系统设计
- 华为Mate40和iPhone12网络舆情传播数据分析报告
- 【Java基础学习】Java基础中容易忽略点-2
- ac自动机(模板+一点点小优化)
- MySQL推出Applier,可实时复制数据到Hadoop
- Selenium Java自动化测试环境搭建
- 今天收到的QQ礼品卡,差点上当……
热门文章
- 【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )
- JavaWeb基础之JdbcUtils工具类2.0
- 第12天续,CSS基础
- 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节
- LINQ的基本语法中八个关键字用法说明
- 《Essential ASP.NET 2.0中文版》
- ROS学习(五):package.xml 文件
- 红黑树,看不懂你找我
- 静态程序分析chapter2 - IR(Jimple) 和 CFG
- 插入排序之——直接插入排序(c/c++)