判斷入棧序列是否可以得到指定順序的出棧序列

2021-10-04 07:46:24 字數 872 閱讀 3689

hou序列用於儲存出棧序列

qian序列用於儲存入棧序列

qian_first表示入棧序列去除前n個元素後第乙個元素的下標(滿足可以刪除首元素和隨機訪問,則選用vector和qian_first模擬佇列)

樣例:

5

1 2 3 4 5

3 2 1 5 4

5

1 2 3 4 5

4 5 1 3 2

#include

#include

#include

using namespace std;

bool is_out

(vector<

int> hou,vector<

int>qian)

//棧頂未找到則從原序列的第qian_first個開始找

int index=-1

;for

(int k=qian_first;k//棧頂沒找到,原序列也沒找到則出棧不可能為該順序

if(index==-1

)return false;

for(

int k=qian_first;k<=index;k++

) s.

pop();

//去除棧頂那個找到的元素

}return true;

}int

input

(vector<

int>

&hou,vector<

int>

&qian)

for(

int i=

0;iintmain()

}

Java實現判斷入棧序列是否可以以某個序列出棧

輸入第乙個序列insequence,是車廂入棧順序 輸入第二個序列outsequence,是車廂出棧順序 演算法判斷以insequence入棧的車廂可否以outsequence的順序出棧 若可以,則返回出入棧動作的順序並列印yes 若不可以,則返回出入棧動作的順序直到失敗的車廂並列印no 演算法的圖...

給定入棧序列判斷給定出棧序列是否合法

題目 輸入兩個整數序列。其中乙個序列表示棧的入棧順序,判斷另乙個序列有沒有可能是對應的出棧順序。思路 用乙個輔助棧,將入棧序列按照某種順序入棧,看是否可以產生出棧序列即可。1 如果當前棧為空,且入棧序列不空,則入棧序列的下乙個元素入棧 2 如果當前輔助棧的棧頂元素不等於出棧序列的首元素,那麼入棧序列...

3 5判斷出棧和入棧操作序列是否合法

題目描述 假設以i和o分別表示入棧和出棧操作,棧的初試狀態和終態都是空,出棧和入棧序列僅有i和o組成。稱可以操作的序列為合法序列,否則為非法序列。寫乙個演算法判斷乙個給定的序列是否合法。若合法返回true,否則返回false.題目分析 乙個由出棧操作和入棧操作組成的序列,要是合法序列應該滿足 1.入...