火车火车!!!!

PS:本文是记录本人的学习stack的记录

有一个火车站,铁路如图所示,每辆火车从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”(注意要大写,不包含引号)。

样例

输入数据 1

5
5 4 3 2 1

Copy

输出数据 1

YES

ps:因为刚学,不太懂,这个题解区大佬的代码,我只能说神迹!!!!!

还有另一道题

【入门】火车编组

说明

货运火车要在编组站根据挂靠车厢到达目的地重新分组,如果一列火车有4节车厢,经过编组后,车厢的编组顺序为3,2,4,1;您知道编组站是怎么编组的吗?小明到编组站参观后发现编组站的铁路有很多岔道,火车在岔道上来来回回地开动,最后列车编组就完成了。小明想到学习过的栈操作,发现火车编组的过程就是由若干进栈,出栈操作构成的。于是小明编了一个程序,只要知道最后的编组要求,就能将编组方案输出。

比如,有4辆火车,初始的顺序是1 2 3 4,最后编组的结果是3 2 4 1,那么只需要准备一个栈,让这4辆火车按照:进栈、进栈、进栈、出站、出站、进栈、出站、出站的顺序进行栈的操作就可以得到3 2 4 1的编组结果。

输入格式

第1行1个正整数n,n<=100

第2行n个小于或等于n的正整数,表示有n节车厢,编号为1,2,3,……,n;编组时按照编号进栈,第2行表示列车经过编组后的车厢编号顺序;

输出格式

一行一个由大写字母A和B构成的字符串,A表示进栈,B表示出栈。表示编组时进栈出栈的操作序列;

样例

输入数据 1

4
3 2 4 1

Copy

输出数据 1

AAABBABB

猜你喜欢

转载自blog.csdn.net/LuciaX_/article/details/129260432