hou序列用於儲存出棧序列
qian序列用於儲存入棧序列
qian_first表示入棧序列去除前n個元素後第乙個元素的下標(滿足可以刪除首元素和隨機訪問,則選用vector和qian_first模擬佇列)
樣例:
51 2 3 4 5
3 2 1 5 4
51 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.入...