標籤(空格分隔): 演算法競賽 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 ...