题目:
某城市有一个火车站,铁轨铺设如图所示,有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
输入
两行,第一行有一个正整数n,表示有n节车厢,第二行有n个正整数,即1到n的一种排列,两两之间有一个空格分隔。
输出
yes或者no
输入示例
5
5 4 1 2 3
输出示例
no

分析与解答:

原数组元素:1到n
目标数组元素:输入
栈:从栈顶到底,n到1
推论:出栈顺序要么是(进一个出一个),要么是栈顶出栈(进多个出一个)
1.当原数组元素等于目标数组元素时,先进栈再出栈即可,
2.否则判断栈顶元素是否等于目标数组,若相等栈顶元素出栈,
3.若不相等在数组不为空的情况下将原数组元素入栈。
4.若都不满足说明不符合条件,flag = 0,break。

#include<cstdio>
#include<stack>
using namespace std;
const int MAX=1000+10;int n,target[MAX];int main(){while(scanf("%d",&n)==1){stack<int> s;int a=1,b=1;for(int i=1;i<=n;++i)scanf("%d",&target[i]);int ok=1;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=0;break;}}printf("%s\n",ok?"Yes":"No");}return 0;
} 

8.2号更新:

模拟了一下过程

(stack栈)rails相关推荐

  1. [Java]Stack栈和Heap堆的区别(终结篇)[转]

    首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语: 堆存储: hea ...

  2. 【C++ 语言】容器 ( queue 队列 | stack 栈 | priority_queue 优先级队列 | set 集合 | 容器遍历 | map )

    文章目录 queue 队列 stack 栈 priority_queue 优先级队列 priority_queue 优先级队列指定排序方法 priority_queue 优先级队列排序行为 prior ...

  3. java集合类——Stack栈类与Queue队列

    今日走读代码时,遇到stack栈类,特查看java的API文档,总结如下: Stack继承Vector类,它通过五个操作对类 Vector 进行了扩展. 栈是 后进先出的. 栈提供了通常的 push ...

  4. Stack(栈 c++模版实现)

    Stack(栈 c++模版实现) // // Created by XXX on 2021/7/10. //#ifndef C11LEARN_STACK_H #define C11LEARN_STAC ...

  5. JAVA Stack栈和Heap堆的区别(转)

          首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:  堆 ...

  6. C/C++ stack栈的理解以及使用

    哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...

  7. java内存stack heap_java内存解析-------stack(栈)和heap(堆)的理解

    学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分. ...

  8. java 线程栈大小配置,JVM运行时数据区详解-Stack栈(优化配置、代码样例)

    最近有段时间没有更新Netty的教程了,却发了一些其他的东西.可能有的朋友会问,难道这就完事了?不会的.两方面原因.第一.笔者也是需要工作的人,自然要完成好工作中的任务,这里面也有很多东西需要学习和研 ...

  9. C++queue队列与stack栈

    queue队列: 调用头文件: #include<queue> using namespace std; 详细用法(部分): queue<Type> k;      ----- ...

最新文章

  1. 基于koa2操作mysql封装例子
  2. java基盘JavaScript_JavaWeb学习:SSH整合(无障碍整合)
  3. vsFTP服务器的配置
  4. python函数实例与类实例_python – 在类和实例上表现不同的函数
  5. Bash : 索引数组
  6. 【MyBatis框架】Mybatis开发dao方法第一部分
  7. (四十九)java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案
  8. 19.9. MySQL Router
  9. MVC与三层架构讲解
  10. 常用破解教程仅供参考,仅供学习用途
  11. MapReduce实现QQ好友推荐
  12. 什么是最小可行产品 MVP?
  13. 空空老师向青海地震捐款~~把我感动毁了
  14. JS的onload事件
  15. 鉴于B站的代码粘贴没有全选功能,up在这里放上软件小妹的脚本代码
  16. 解决error while loading shared libraries: xxx.so.x类似问题办法和错误原因
  17. Log4j的基本应用
  18. Failed resolution of: Lkotlin/jvm/internal/Intrinsics;
  19. 设备树下的 platform 驱动开发框架
  20. 《灵飞经5·龙生九子》第二十三章 力压须眉(上)

热门文章

  1. Win10安装 WSL Ubuntu Linux系统,非双系统,完美兼容超详细版本
  2. c++11特性move和forward区别
  3. 以命令方式从ftp服务器上下载和上传文件
  4. oracle监听系统账号,linux 下 Oracle 监控sysdba用户登陆
  5. ble 连接成功后找不到服务_闷声发大财的BLE芯片龙头
  6. gossip 区块链_区块链中的P2P
  7. linux批量部署war工具,Linux 批量一键部署工具 Expect
  8. php 删除文件夹及文件夹,php删除一个路径下的所有文件夹和文件的方法
  9. linux远程连接最大数是多少,Linux Shell 脚本限制ssh最大用户登录数
  10. php分列显示,【杂谈】PHP数组怎样按键名完成降序分列