POJ1363驗證出棧序列問題

2021-06-04 10:49:27 字數 373 閱讀 8329

此題只需驗證是否為合法的出棧序列。

有兩個思路:

1、每個已出棧之後的數且小於此數的數都必須按降序排列。複雜度o(n^2),適合人腦。

2、另乙個思路就是直接模擬入棧出棧過程。雖然模擬毫無技巧可言,但複雜度o(n),優於演算法1。適合電腦。

**如下:

for(i = 0; i < n; i++)

stack.pop();

} else if(stack != null && stack.peek().equals(new integer(data[i]))) else

}題目只用於驗證,倒不難,不過我想問如果讓求出所有合法的出棧序列該怎麼求????有高效的演算法嗎?

Poj1363 判斷合法棧序列

經發現,如果是三個數的情況下,不合法的順序只有312,也就是乙個數最大第二個數最小的情況下,出棧序列是不合法的,原先我是只比較相連的三個序列,經老師提醒應該是全域性的三個數進行比較。include include include using namespace std const int maxn ...

poj 1363 判斷棧序列是否合法

已知從1到n的數字序列,按順序入棧,每個數字入棧後即可出棧,也可在棧中停留,等待後面的數字入棧出棧後,該數字再出棧,求該數字序列的出棧序列是否合法 比如 3 2 5 4 1 合法序列 3 1 2 4 5 不合法序列 因為1肯定比2先入棧,所以1不可能比2先出棧 思路 為了測試出棧序列是否正確,將元素...

POJ 1363 Rails 合法的出棧序列

使用棧與佇列模擬入棧 出棧過程 輸入輸出格式搗鼓了半天 include include include include include include include include using namespace std typedef long long ll const int mod 100...