UVa 514 鐵軌 棧的學習

2022-02-01 12:14:10 字數 1300 閱讀 1083

題目:鐵軌

題目描述:

某城市有乙個火車站,有n節車廂從a方向駛入車站,按進站的順序編號為1-n.你的任務是判斷是否能讓它們按照某種特定的順序進入b方向的鐵軌並駛入車站。例如,出棧順序(5 4 1 2 3)是不可能的,但是(5 4 3 2 1)是可能的。

題目分析:

為了重組車廂,借助中轉站,對於每個車廂,一旦從a移入c就不能回到a了,一旦從c移入b,就不能回到c了,意思就是a->c和c->b。而且在中轉站c中,車廂符合後進先出的原則。故這裡可以看做為乙個棧。

【分析】

a代表a中當前待進站的第一輛火車

tar[b]代表出戰序列中當前應該出站的火車

棧sta代表火車站(棧)

判斷條件:

1.當a == tar[b]時,a進站馬上出站,即表示當前序列可以實現

2.棧頂(車站中的末尾火車)與輸入的出站序列比較,若相同,出站,並繼續向下比較

3.以上若不成立,則將當前a壓入棧中

4.出站序列不存在,即a > n,車站中仍有火車,說明輸入的出站序列無法實現

【總結】

bool emply()  判斷棧是否為空

void push()  將新元素壓入棧中

void pop()  用於棧不為空時,彈出棧頂元素

void top()  用於取棧頂元素(但不刪除)

stl的棧定義在標頭檔案中,可以用「stacks」宣告

UVa 514 鐵軌 棧的學習

題目 鐵軌 題目描述 某城市有乙個火車站,有n節車廂從a方向駛入車站,按進站的順序編號為1 n.你的任務是判斷是否能讓它們按照某種特定的順序進入b方向的鐵軌並駛入車站。例如,出棧順序 5 4 1 2 3 是不可能的,但是 5 4 3 2 1 是可能的。題目分析 為了重組車廂,借助中轉站,對於每個車廂...

UVA514 鐵軌 Rails 題解

入站序列是1 n,入站後判斷如果等於出站序列的當前值,則直接出站。否則就在棧裡待著不動。模擬即可,可以選擇使用stl棧或手寫。include include include using namespace std int a 1005 n,cnt,bh,pd intmain cnt bh pd 1 ...

UVA514 鐵軌 Rails 題解

入站序列是1 n,入站後判斷如果等於出站序列的當前值,則直接出站。否則就在棧裡待著不動。模擬即可,可以選擇使用stl棧或手寫。include include include using namespace std int a 1005 n,cnt,bh,pd intmain cnt bh pd 1 ...