#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

铁轨问题 判断是否为出栈顺序相关推荐

  1. 【LeetCode946】判断可能的出栈顺序

    [LeetCode946]判断可能的出栈顺序 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某 ...

  2. 判断出栈顺序的合法性(面试题)

    判断出栈顺序的合法性 "栈"是一种限制性线性表,是将线性表的插入.删除操作限制为仅在表的一端进行,一般将能够插入.删除的一端称为栈顶,表的另一端称为栈底.当栈中没有元素时称为空栈. ...

  3. 数据结构----出栈顺序有效性的判断

    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. ...

  4. 【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 ...

  5. 判断栈的出栈顺序是否正确

    一 问题描述:      两个数组pPush和pPop分别存储了压栈序列和出栈序列,如何判断出栈序列是否正确,假设元素不重复.      需要实现的函数: bool isStackOutRight(i ...

  6. 根据入栈顺序判断出栈顺序的合法性

    这道题不管是面试还是笔试的选择题都非常爱出的一道题 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4 ...

  7. java判断出栈顺序,java判断出栈顺序是否正确

    java判断出栈顺序是否正确 我们知道栈是一种先进后出的数据容器.当一个栈的输入序列是递增序列(例如a,b,c,d),并且在进栈操作时,允许退栈操作,则输出的序列可能有多种形式(例如:d,c,b,a或 ...

  8. 判断出栈顺序是否正确

    先说一下题目: 假设有一个栈S,每次我们可以把序列A(含N个元素)中的第一个元素移入栈S,也可以是从栈顶弹出一个元素放入出栈序列B.这 样,经过N次入栈和出栈操作后,我们可以得到一个出栈序列B. 现在 ...

  9. 判断出栈顺序合法性的两种方法

    文章目录 今天偶然看到一个面试题, 题目是这样的: 给我们两个序列,第一个序列表示栈的压入顺序,然后让判断第二个序列是不是是否是该栈的弹出序列 现设第一个序列为[1,2,3,4,5],第二个序列为[3 ...

最新文章

  1. 随机森林为何要有放回抽样
  2. 吴恩达 coursera ML 第十一课总结+作业答案
  3. python打开文件并读取2进制_在Python中,哪些文件可以读取为文本,哪些文件可以读取为二进制?...
  4. 深入理解Java内存模型(七)——总结
  5. python为什么需要编辑器_Python是个什么鬼?为什么设计大牛都在学它?!
  6. lenovo Win10 安装 Androd Studio 新版本编程开发的软件
  7. 30个提高Web程序执行效率的好经验
  8. 红米手机4X获得Root权限的流程
  9. MyBatis14 缓存
  10. python自然语言处理学习笔记一
  11. 虚幻4--UE4是什么?
  12. 重庆APP开发价格费用如何计算?
  13. uniapp 评价应用_uniapp打开应用市场(APP端)
  14. 互联网券商证券公司网上开户系统设计
  15. 华为Mate40和iPhone12网络舆情传播数据分析报告
  16. 【Java基础学习】Java基础中容易忽略点-2
  17. ac自动机(模板+一点点小优化)
  18. MySQL推出Applier,可实时复制数据到Hadoop
  19. Selenium Java自动化测试环境搭建
  20. 今天收到的QQ礼品卡,差点上当……

热门文章

  1. 【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 )
  2. JavaWeb基础之JdbcUtils工具类2.0
  3. 第12天续,CSS基础
  4. 前台页面验证中需要注意的一个与VARCHAR2(N BYTE)和VARCHAR2(N CHAR)的小细节
  5. LINQ的基本语法中八个关键字用法说明
  6. 《Essential ASP.NET 2.0中文版》
  7. ROS学习(五):package.xml 文件
  8. 红黑树,看不懂你找我
  9. 静态程序分析chapter2 - IR(Jimple) 和 CFG
  10. 插入排序之——直接插入排序(c/c++)