时间限制: 1 Sec 内存限制: 128 MB
[提交] [状态]
题目描述
有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节(n≤1000),分别按照顺序编号为1,2,3,…,n。假定在进入车站前,每节车厢之间都不是连着的,并且它们可以自行移动到B处的铁轨上。另外假定车站C可以停放任意多节车厢。但是一旦进入车站C,它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨,它就不能再回到车站C。

负责车厢调度的工作人员需要知道能否使它以a1,a2,…,an的顺序从B方向驶出,请来判断能否得到指定的车厢顺序。

输入
第一行为一个整数n,其中n≤1000,表示有n节车厢,第二行为n个数字,表示指定的车厢顺序。
输出
如果可以得到指定的车厢顺序,则输出一个字符串”YES”,否则输出”NO”(注意要大写,不包含引号)。
样例输入 Copy

5
5 4 3 2 1

样例输出 Copy

YES

判断是否为合法的出栈序列,根据栈的“先进后出、后进先出”特性,本题可以考虑模拟入栈、出栈操作。具体做法是遍历出栈序列,如果栈为空或栈顶元素不等于出栈序列的当前元素,则进栈;如果栈顶元素等于出栈序列的当前元素,则弹出栈顶元素,恰好模拟了出栈这个操作,出栈序列元素的位置后移一位,即寻找下一个应该出栈的元素。依次进行下去,如果出栈序列合法,那么最后栈一定为空,反之不为空。

#include<cstdio>
#include<stack>
using namespace std;
stack<int>num;
int out_order[1005];
int main()
{int n,i,j=1;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&out_order[i]);//出栈序列}for(i=1;i<=n;i++){num.push(i);//模拟进栈while(!num.empty()&&num.top()==out_order[j])//栈顶元素等于出栈序列的元素,模拟出栈{num.pop();j++;}}if(num.empty())printf("YES");else printf("NO");return 0;
}
/**************************************************************Language: C++Result: 正确Time:1 msMemory:1948 kb
****************************************************************/

车厢调度(判断是否为合法的出栈序列)相关推荐

  1. PAT甲级1051 Pop Sequence:[C++题解]模拟栈、判断序列是否是合法的出栈序列

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 题意:将1~N压栈,判断给定序列是否是合法的出栈序列. 对于序列1~N中的每个值i,先将其压入栈.然后对于它就有两种处理方法:要么压 ...

  2. 栈 - 关于出栈序列,判断合法的出栈序列

    文章目录 1 引例 2 做题方法 3 原因 3.1 选项D(4 3 1 2)的模拟 1 引例 (例)设栈的入栈序列是 1 2 3 4,则下列不可能是其出栈序列的是( ). A. 1 2 4 3 B. ...

  3. [程序人生]: 判断字符串是否为出栈序列

    题目: 给出一个字符串Initial和另一个字符串Detection,判断Detection是否为Initial的一个出栈序列 如:Initial = 123456, Detection = 2136 ...

  4. python程序设计祁瑞华答案_【单选题】有六个元素 6 , 5 , 4 , 3 , 2 , 1 的顺序进栈,问下列哪一个不是合法的出栈序列? (2.0分)...

    参考答案如下 单选的顺[单选题]在 C51 的函数中,如果该函数无返回值, ______ 可以省略. 元素[多选题]下列( )属于一般常用的封头类型. 序进下列序列[填空题]Fill in the b ...

  5. 出栈序列统计—中学高级本

    关于栈的应用拓展 栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你已经知道栈的操作有两·种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出.现在要使用这 ...

  6. 数据结构实验之栈与队列七:出栈序列判定

    Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...

  7. 数据结构实验之栈七:出栈序列判定

    题目描述 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列. 例如序列 ...

  8. 详解+G - 数据结构实验之栈与队列七:出栈序列判定

    理解: 出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现.比如4,1,2,3,5. 思路:输入一个数,然后不断按照顺序 ...

  9. 给定入栈序列,判断出栈序列是否合法

    题目:分别给定入栈序列和出栈序列,然后判断出栈序列是否合法.如入栈序列是[1,3,2,4,5],出栈序列[3,1,2,4,5]是合法的,[3,1,5,2,4]是不合法的. 思路: 判断出栈序列是否合法 ...

最新文章

  1. 几种检查调试CSS布局的有效方法
  2. 关于面试,我也有说的
  3. 大数据预测:成都、郑州等跻身春节十大“瘦身”城市
  4. C++异常以及错误处理
  5. plt.errorbar画误差曲线
  6. hdu-4417-Super Mario
  7. 修改Extmail和Extman的源代码增加公司部门和中文名字段
  8. 安徽理工大学大学计算机科学与技术学院,安徽理工大学计算机科学与工程学院介绍...
  9. 传统词向量nlp处理的优缺点_吴恩达深度学习笔记(126) | NLP | GloVe 词向量
  10. 数据标注工具YEDDA
  11. 把酸性体质改变成碱性体质的秘密
  12. 两种常用癌症免疫疗法CAR-T与TCR-T的联系和区别
  13. 键盘移动小div(js原生)
  14. 清除90天苹果充值记录_苹果内购退款2020千万要知道的技巧,不得不看!
  15. ARMv7和ARMv8架构比较
  16. NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》
  17. Java发展前景与职业方向解析
  18. 懒人之家-QQ客服右侧
  19. leetcode股票买卖问题
  20. Python爬虫:url中带字典列表参数的编码转换

热门文章

  1. 苹果7支持快充吗_苹果iphone12防水防摔吗 iphone12系列支持IP68防水吗
  2. 用 Markdown 做的 PPT,真的太强了!
  3. 如何在PowerPoint图表中编辑或删除数据
  4. 最好的生活方式,说得太对了!(收藏这10句话)
  5. 一天一个设计模式(4)——建造者模式
  6. 重装系统要注意什么问题
  7. 学两个月年薪超20万,在国外当程序员这么容易?
  8. php全局变量更改,PHP设置全局变量的方法
  9. 女装大佬教你如何使用github
  10. 正确配置JVM参数-附JVM参数详解