驗證棧的序列 車廂排程

2021-10-19 08:04:20 字數 2313 閱讀 1016

做題的過程中,我們可以一題多解多題一解,來比較題的差異,從而收穫很多

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 8476 通過數: 4298

【題目描述】

有乙個火車站,鐵路如圖所示,每輛火車從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」(注意要大寫,不包含引號)。

【輸入樣例】

55 4 3 2 1

【輸出樣例】

yes題目描述

給出兩個序列 pushed 和 poped 兩個序列,其取值從 1 到 n(n\le100000)n(n≤100000)。已知入棧序列是 pushed,如果出棧序列有可能是 poped,則輸出 yes,否則輸出 no。為了防止騙分,每個測試點有多組資料。

輸入格式

第一行乙個整數 qq,詢問次數。

接下來 qq 個詢問,對於每個詢問:

第一行乙個整數 nn 表示序列長度;

第二行 nn 個整數表示入棧序列;

第二行 nn 個整數表示出棧序列;

輸出格式

對於每個詢問輸出答案。

輸入輸出樣例

輸入 #1複製25

1 2 3 4 5

5 4 3 2 1

41 2 3 4

2 4 1 3

輸出yes

no通過讀題可以發現兩道題都是在解決同一種問題

這個出棧序列是否可以由這個序列入棧出棧後達到

所以我們可以想到:既然他告訴了我們這個序列的順序,那能不能通過這個序列模擬一下入棧出棧

如果模擬成功,出棧的順序一致,那就是對了

如果不行,那就錯了

那判斷模擬是否成功的標準是什麼?

如果這個出棧順序能由這個序列達到,那一定會怎樣?

那一定會是空棧(想一想,如果出棧後是這個順序,那麼棧一定沒東西了,那反過來,順序達不到,是不是棧裡還有元素

如果我講的不太清楚,可以結合**再看看

//車廂排程code

嘗試轉換成驗證棧序列

#include

#include

#include

#include

using

namespace std;

stack<

int> num;

int ar[

1000010];

//pushed

int ar1[

1000010];

//poped

int n;

intmain()

}if(num.

empty()

) cout<<

"yes"

"no"

(!num.

empty()

) num.

pop();

//清空棧

return0;

}

``

可能有小夥伴不太懂

stack

介紹一下

#include

//實現棧的標頭檔案

stack name;

t=int

,char

,long

long

(是資料型別

name 自己取名(不要取重名

for example

stack<

int> a;

a.push()

//在棧頂壓入乙個元素

a.pop()

//彈出棧頂元素

a.top()

//返回棧頂元素,不刪除值

a.empty()

//檢驗棧是否為空

a.size()

//返回棧的長度

驗證棧的序列 車廂排程

做題的過程中,我們可以一題多解,多題一解,來比較題的差異,從而收穫很多 時間限制 1000 ms 記憶體限制 65536 kb 提交數 8476 通過數 4298 題目描述 有乙個火車站,鐵路如圖所示,每輛火車從a駛入,再從b方向駛出,同時它的車廂可以重新組合。假設從a方向駛來的火車有n節 n 10...

1357 車廂排程 train (棧)

1357 車廂排程 train 時間限制 1000 ms 記憶體限制 65536 kb 提交數 6775 通過數 3515 題目描述 有乙個火車站,鐵路如圖所示,每輛火車從a駛入,再從b方向駛出,同時它的車廂可以重新組合。假設從a方向駛來的火車有n節 n 1000 分別按照順序編號為1,2,3,n。...

車廂排程問題 佇列和棧的實現

根據佇列和棧的性質 佇列找尾部最大的車廂號 棧找尾部最小的車廂號 棧 佇列 陣列可用stl或者自己實現 pragma once include vector.h include queue.h include stack.h include const char inputvectorfilenam...