博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
铁轨(Rails,UVa 514)
阅读量:3952 次
发布时间:2019-05-24

本文共 672 字,大约阅读时间需要 2 分钟。

题目描述:

某城市有一个火车站,铁轨铺设如下图所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是判断是否能让他们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如,出站顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C。对于每个车厢,一旦从A移出就不能再返回到A了;一旦从C移入B,就不能再回到C了。换句话说,在任意时刻,只有两种选择:A->C和C->B.

铁轨示意图

样例输入:
5
5 4 1 2 3
5
5 4 3 2 1
样例输出:
NO
YES

分析:

先进的列车后出,可以借助栈来解决,先用一个target数组来存储将要验证的进入B的顺序,从A出来的列车顺序是固定的即1~n,从A出来的要么先存在C中,要么直接进入B,我们可以假想B有一个守卫拿着一份顺序单只让按照先后顺序的列车进去。此题是数据结构栈当中的一道经典题目。
代码如下:

#include 
#include
#include
#define MAXN 1010using namespace std;int n;int target[MAXN];//存储将要验证的顺序int main(){
while(scanf("%d",&n)==1){
stack
s ; for(int i=1;i

转载地址:http://fyzzi.baihongyu.com/

你可能感兴趣的文章
Ubuntu下几个重要apt-get命令用法与加速UBUNTU
查看>>
Ubuntu中网页各种插件安装命令
查看>>
使用tar命令备份Ubuntu系统
查看>>
ubuntu flash 文字乱码解决方案
查看>>
在ubuntu中运行exe文件
查看>>
ubuntu安装命令
查看>>
和上司沟通必备8个黄金句
查看>>
联系查看两张卡的未接电话记录
查看>>
Python 3 之多线程研究
查看>>
APP第三方登录实现步骤
查看>>
KVO & KVC 比较 - KVC
查看>>
iOS-tableView联动
查看>>
iOS--Masonry解决 tableViewCell 重用时约束冲突
查看>>
git 与 svn 的主要区别!
查看>>
iOS-截屏,从相册选择图片,制作磨砂效果图片
查看>>
iOS-截取字符串中两个指定字符串中间的字符串
查看>>
数据库-数据库操作(使用FMDB)
查看>>
FMDB介绍以及在 swift 中的数据库操作
查看>>
iOS运行时机制(附Demo演练)
查看>>
宽字符串输出问题
查看>>