POJ 1363 Rails 判斷出棧序列是否合法

2022-05-29 12:09:13 字數 812 閱讀 6506

題目大意:判斷乙個出棧序列能不能從1,2,3,……,n 經過棧處理後生成。

思路:ⅰ:定理:出棧序列不合法 <=> 存在k,滿足i。(i,j,k是入站順序,s[i],s[j],s[k]是出棧順序)。

如果用這個定理判斷則需要o(n^3)的時間,不合適。

②如果當前棧頂元素是下乙個要出棧元素則讓它出棧。

③否則把當前元素進棧來看下乙個

當要進棧的所有元素都處理後,依次彈出棧內元素,如果有和出棧元素不符的則出棧序列不合法。

#include #include 

#include

#include

using

namespace

std;

int s[1010

];int

main()

for (int i = 1; i < n; i ++)

int b = 0

;

int i = 0

;

while (i else

if (!t.empty() && t.top() ==s[b])

else

}int ok = 1

;

while(!t.empty() && b t.pop();

b ++;

}if (ok) cout<<"

yes\n";

else cout<<"

no\n";

}cout

<}

return0;

}

POJ 1363 Rails 判斷出棧序列是否合法

題目大意 判斷乙個出棧序列能不能從1,2,3,n 經過棧處理後生成。思路 定理 出棧序列不合法 存在k,滿足i。i,j,k是入站順序,s i s j s k 是出棧順序 如果用這個定理判斷則需要o n 3 的時間,不合適。如果當前棧頂元素是下乙個要出棧元素則讓它出棧。否則把當前元素進棧來看下乙個 當...

POJ 1363 Rails 解題報告

poj 1363 rails 解題報告 題目的意思是給出一組數,問你是不是一組合法的出棧序列。我有兩個思路 1 每個已出棧之後的數且小於此數的數都必須按降序排列。複雜度o n 2 2 另乙個思路就是直接模擬入棧出棧過程。雖然模擬毫無技巧可言,但複雜度o n 優於演算法1。12 include cst...

poj 1363 Rails 解題報告

題意 有一列火車,車廂編號為1 n,從a方向進站,向b方向出站。現在進站順序確定,給出乙個出站的順序,判斷出站順序是否合理。實際上是模擬棧的過程,而棧的特點是先進後出。另外乙個麻煩的地方就是輸入輸出格式問題。本題實現提供兩種方法 沒有用到stl棧和有用到stl棧 1 include 法二 標頭檔案多...