1 4 列車廂排程 25分

2021-10-25 04:56:23 字數 1715 閱讀 2692

題目描述

1

====

==<

--移動方向

/3==

=== \2

====

==--

>移動方向

有三條平行的列車軌道(1、2、3)以及1-3和2-3兩段連線軌道。現有一列車廂停在1號軌道上,請利用兩條連線軌道以及3號軌道,將車廂按照要求的順序轉移到2號軌道。規則是:

每次轉移1節車廂;

處在1號軌道的車廂要麼經過1-3連線道進入3號軌道(該操作記為"1->3"),要麼經過兩條連線軌道直接進入2號軌道(該操作記為"1->2");

一旦車廂進入2號軌道,就不可以再移出該軌道; 處在3號軌道的車廂,只能經過2-3連線道進入2號軌道(該操作記為"3->2");

顯然,任何車廂不能穿過、跨越或繞過其它車廂進行移動。

對於給定的1號停車順序,如果經過排程能夠實現2號軌道要求的順序,則給出操作序列;如果不能,就反問使用者 are(你) you(是) kidding(凱丁) me(麼)?

輸入格式:

兩行由大寫字母組成的非空字串,第一行表示停在1號軌道上的車廂從左到右的順序,第二行表示要求車廂停到2號軌道的進道順序(輸入樣例1中第二行cba表示車廂在2號軌道的停放從左到右是abc,因為c最先進入,所以在最右邊)。兩行字串長度相同且不超過26(因為只有26個大寫字母),每個字母表示一節車廂。題目保證同一行內的字母不重複且兩行的字母集相同。

輸出格式:

如果能夠成功排程,給出最短的操作序列,每個操作佔一行。所謂「最短」,即如果1->2可以完成的排程,就不要通過1->3和3->2來實現。如果不能排程,輸出"are you kidding me?"

輸入樣例1:

abc

cba

輸出樣例1:

1

->31

->31

->23

->23

->

2

輸入樣例2:

abc

cab

輸出樣例2:

are you kidding me?
#include

#include

#include

using

namespace std;

intmain()

for(

int i =

0; i < s2.

length()

; i++

)while

(!a.

empty()

)else

while

(!c.

empty()

&& c.

top(

)== b.

front()

)}if(c.

empty()

) cout << s;

else cout <<

"are you kidding me?\n"

;}

1 4 列車廂排程 25 分

1 移動方向 3 2 移動方向有三條平行的列車軌道 1 2 3 以及1 3和2 3兩段連線軌道。現有一列車廂停在1號軌道上,請利用兩條連線軌道以及3號軌道,將車廂按照要求的順序轉移到2號軌道。規則是 對於給定的1號停車順序,如果經過排程能夠實現2號軌道要求的順序,則給出操作序列 如果不能,就反問使用...

1 4 列車廂排程 25分

1 移動方向 3 2 移動方向有三條平行的列車軌道 1 2 3 以及1 3和2 3兩段連線軌道。現有一列車廂停在1號軌道上,請利用兩條連線軌道以及3號軌道,將車廂按照要求的順序轉移到2號軌道。規則是 每次轉移1節車廂 處在1號軌道的車廂要麼經過1 3連線道進入3號軌道 該操作記為 1 3 要麼經過兩...

7 6 列車廂排程 25 分

大家或許在某些資料結構教材上見到過 列車廂排程問題 當然沒見過也不要緊 今天,我們就來實際操作一下列車廂的排程。對照上方的ascii字元圖,問題描述如下 有三條平行的列車軌道 1 2 3 以及1 3和2 3兩段連線軌道。現有一列車廂停在1號軌道上,請利用兩條連線軌道以及3號軌道,將車廂按照要求的順序...