思路說明:
這一題就是給定乙個1~n排列,判定是否是1~n輸入序列的出棧序列,其中1~n可以任意時刻出棧入棧,也是黑書上一道例題吧
詳細解釋:
對輸入序列從頭開始檢索,fp是輸入序列的下標,rp是輸出序列的下標,並且新建乙個棧
if( fp==rp)
fp++,rp++;
else
st.push( inp[ip]);
}
易錯點:
在掃瞄最後輸入之後,仍要檢查一次,是否可以從棧中彈出
測試資料的讀取
個人收穫:
之前做過類似的題目,練了下編碼能力,邏輯可能會習慣一點
#include#includeusing namespace std;
int main()
stackstation;
rp=1;
for( fp=1; fp<=n; fp++)
station.push(inp[fp]);}}
while((!station.empty() )&&station.top()==oup[rp])
if(rp>n)
cout<<"yes"<
UVA 514 Rails 鐵軌 棧的模擬
標籤 空格分隔 演算法競賽 c 演算法 紫書 這道題第一次見是在acm俱樂部寒假訓練賽中,但是當時太菜了,即便知道是用棧來做,也想不出怎麼模擬。過了乙個寒假,學了些c 感覺能做了,但是找不到用棧模擬火車還是車站,所以還是做不出。直到看了提示,知道是用棧模擬車站後,這才做出來的。原題不打了,在紫書14...
UVA 514 Rails 鐵軌 棧的模擬
標籤 空格分隔 演算法競賽 c 演算法 紫書 這道題第一次見是在acm俱樂部寒假訓練賽中,但是當時太菜了,即便知道是用棧來做,也想不出怎麼模擬。過了乙個寒假,學了些c 感覺能做了,但是找不到用棧模擬火車還是車站,所以還是做不出。直到看了提示,知道是用棧模擬車站後,這才做出來的。原題不打了,在紫書14...
POJ 1363 Rails 合法的出棧序列
使用棧與佇列模擬入棧 出棧過程 輸入輸出格式搗鼓了半天 include include include include include include include include using namespace std typedef long long ll const int mod 100...