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
输出数据 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
输出数据 1
AAABBABB