UVA 514 Rails 鐵軌 棧的模擬

2022-06-13 19:36:12 字數 961 閱讀 5672

標籤(空格分隔): 演算法競賽 c++ 演算法 紫書

這道題第一次見是在acm俱樂部寒假訓練賽中,但是當時太菜了,即便知道是用棧來做,也想不出怎麼模擬。過了乙個寒假,學了些c++,感覺能做了,但是找不到用棧模擬火車還是車站,所以還是做不出。直到看了提示,知道是用棧模擬車站後,這才做出來的。

原題不打了,在紫書140頁。我只寫解題過程。

為了達到重組的要求,首先,我們要用陣列記錄重組後火車的車廂次序(剛開始做這第一步我就錯了,我不知道這裡應不應該用棧來做,或者說,我不知道棧應該用在**)。之後,要分別比較車廂進站次序j和車廂出站次序train[i],以及車站中的火車。演算法如**中line20~line30所示。

#include 

#include

#include

#include

#define n 1005

using

namespace

std;

int t[n];

int main()

else t[1]=p;

for (int q=2;q<=n;q++) scanf("%d",t+q);

stack

st;

int i=1,j=1,flag=1;

while (i<=n)

else

if (!st.empty()&&st.top()==t[i])

else

if (j<=n)

else

}printf("%s\n",flag?"yes":"no");

memset(t,0,sizeof(t));

goto begins;

}return

0;}

這個模擬過程我想了很久都沒想明白,直到用了幾個例項,在紙上寫寫畫畫才搞明白的。還需要注意的是這道題的輸入輸出格式比較奇葩,一不小心就pe,逼得我用了goto。

UVA 514 Rails 鐵軌 棧的模擬

標籤 空格分隔 演算法競賽 c 演算法 紫書 這道題第一次見是在acm俱樂部寒假訓練賽中,但是當時太菜了,即便知道是用棧來做,也想不出怎麼模擬。過了乙個寒假,學了些c 感覺能做了,但是找不到用棧模擬火車還是車站,所以還是做不出。直到看了提示,知道是用棧模擬車站後,這才做出來的。原題不打了,在紫書14...

UVA514 鐵軌 Rails 題解

入站序列是1 n,入站後判斷如果等於出站序列的當前值,則直接出站。否則就在棧裡待著不動。模擬即可,可以選擇使用stl棧或手寫。include include include using namespace std int a 1005 n,cnt,bh,pd intmain cnt bh pd 1 ...

UVA514 鐵軌 Rails 題解

入站序列是1 n,入站後判斷如果等於出站序列的當前值,則直接出站。否則就在棧裡待著不動。模擬即可,可以選擇使用stl棧或手寫。include include include using namespace std int a 1005 n,cnt,bh,pd intmain cnt bh pd 1 ...