7-5 列车厢调度 (25 分)
7-5 列車廂調(diào)度 (25 分)
1 ====== <--移動方向/ 3 ===== \2 ====== -->移動方向大家或許在某些數(shù)據(jù)結(jié)構(gòu)教材上見到過“列車廂調(diào)度問題”(當然沒見過也不要緊)。今天,我們就來實際操作一下列車廂的調(diào)度。對照上方的ASCII字符圖,問題描述如下:
有三條平行的列車軌道(1、2、3)以及1-3和2-3兩段連接軌道。現(xiàn)有一列車廂停在1號軌道上,請利用兩條連接軌道以及3號軌道,將車廂按照要求的順序轉(zhuǎn)移到2號軌道。規(guī)則是:
每次轉(zhuǎn)移1節(jié)車廂;
處在1號軌道的車廂要么經(jīng)過1-3連接道進入3號軌道(該操作記為"1->3"),要么經(jīng)過兩條連接軌道直接進入2號軌道(該操作記為"1->2");
一旦車廂進入2號軌道,就不可以再移出該軌道;
處在3號軌道的車廂,只能經(jīng)過2-3連接道進入2號軌道(該操作記為"3->2");
顯然,任何車廂不能穿過、跨越或繞過其它車廂進行移動。
對于給定的1號停車順序,如果經(jīng)過調(diào)度能夠?qū)崿F(xiàn)2號軌道要求的順序,則給出操作序列;如果不能,就反問用戶 Are(你) you(是) kidding(凱丁) me(么)?
輸入格式:
兩行由大寫字母組成的非空字符串,第一行表示停在1號軌道上的車廂從左到右的順序,第二行表示要求車廂停到2號軌道的進道順序(輸入樣例1中第二行CBA表示車廂在2號軌道的停放從左到右是ABC,因為C最先進入,所以在最右邊)。兩行字符串長度相同且不超過26(因為只有26個大寫字母),每個字母表示一節(jié)車廂。題目保證同一行內(nèi)的字母不重復且兩行的字母集相同。
輸出格式:
如果能夠成功調(diào)度,給出最短的操作序列,每個操作占一行。所謂“最短”,即如果1->2可以完成的調(diào)度,就不要通過1->3和3->2來實現(xiàn)。如果不能調(diào)度,輸出 “Are you kidding me?”
輸入樣例1:
ABC
CBA
輸出樣例1:
1->3
1->3
1->2
3->2
3->2
輸入樣例2:
ABC
CAB
輸出樣例2:
Are you kidding me?
坑點:在對比1棧(起始軌道)和re數(shù)組(目標軌道)時,遇到相同的就移到目標軌道,否則移入3棧暫存,當從1棧開始移動時,只有兩個選擇:
- 移動到2棧,即目標棧
- 移動到3棧,即暫存棧
當暫存棧符合re數(shù)組的要求時,一定要用while循環(huán)(任意類型循環(huán)都行,只需要控制好條件)將所有符合的字符全部pop出來,不然很可能出現(xiàn)遺漏問題(測試點2),例如:
ABCDEF
CDBAEF
左側(cè)為正確答案
總結(jié)
以上是生活随笔為你收集整理的7-5 列车厢调度 (25 分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网--称砝码
- 下一篇: 【剑指offer】面试题16:数值的整数