ZCMU 1880 wjw的火車站

2021-08-21 21:11:01 字數 1757 閱讀 6961

wjw最近新開了一座火車站...沒錯就是火車站,因為寒假過完同學們都該返校了,所以他準備大幹一場,但是這裡有乙個問題,因為wjw的資金不足,所以這座火車站只有一條鐵路,所有的火車從一側進入,從另一側出來,但是為了方便排程火車,所以wjw機智的修改了一下鐵路。如下圖,如果火車a首先進入鐵路,然後火車b在火車a離開之前進入鐵路,則火車a只有在火車b離開後才能離開。那麼現在問題來了,有一串火車按給定順序進入車站,wjw希望在通過他的一波操作使這列火車以另乙個順序開出火車站,但是他的智商並不支援他解決這個問題,所以你的任務是確定在給定進站順序和出站順序的情況下,給出排程操作。

輸入包含多組資料。每個測試資料報含乙個正整數n表示火車數,接下去的兩個序列表示進站順序和出站順序,火車編號為小寫或大寫字母,(a≠a)

輸出資料報含乙個字串「yes.」或「no.」,表示是否有可行的排程方案,若有,則輸出排程操作。

3 abc cba 3 abc cab

case #1: yes. in in in out out out case #2: no.

棧的基礎題……

它的基本思路就是將火車入站的序列號存放在a陣列裡面,把火車出站的序列號放在b陣列裡面,然後再設立乙個p陣列分別存放0,1數字用的,0的話表示入棧成功,1的話表示出棧成功,然後再將a陣列裡面的元素逐漸入棧,然後就將s的棧頂元素跟b陣列裡面的元素進行比較,如果一樣,就把那個元素從棧裡面取出。最後只要判斷取出來的元素數量和原來b陣列裡面的數量進行比較就可以了,如果不一樣,就說明排程不成功,如果一樣,就表示排程成功。

ac**:

#include

using namespace std;

char a[100000],b[100000];//a陣列是用來存放進站的序列號的,b是用來存放出站的序列號的

int p[200000];//p陣列實際上就是為了下面的判斷所使用的,如果是進站的話,那就是0.出站的話就是1,

stacks;///建立乙個棧

int main()

int cut=0;//cut用來計數這是第幾次輸入資料

int n;//這個n表示有幾個火車在進出

while(~scanf("%d %s %s",&n,a,b))//輸入進入情況

cut++;

memset(p,0,sizeof(p));//陣列初始化

int sum=0;

int len=strlen(a);

int len2=strlen(b);

int flag=0;

for(int i=0;is.push(a[i]);///將元素放入棧中;

p[sum]=0;

sum++;//為了求入棧和出棧的總和次數

while(!s.empty()/*判斷是否為空*/&&s.top()==b[flag]&&flagflag++;

s.pop();//取出棧頂的元素

p[sum]=1;

sum++;

printf("case #%d: ",cut);

if(flag!=len2)

printf("no.\n");//如果取出的元素的數量和原來的數量不一樣的話,那麼說明不能達到

else

printf("yes.\n");

for(int i=0;iif(p[i]==0)

printf("in\n");

else

printf("out\n");

return 0;

ZCMU 1880 wjw的火車站 棧

time limit 1 sec memory limit 128 mb wjw最近新開了一座火車站.沒錯就是火車站,因為寒假過完同學們都該返校了,所以他準備大幹一場,但是這裡有乙個問題,因為wjw的資金不足,所以這座火車站只有一條鐵路,所有的火車從一側進入,從另一側出來,但是為了方便排程火車,所以...

描寫火車站場景 關於描寫火車站的句子

關於描寫火車站的句子 關於描寫火車站的句子 所以至今,我仍很愛乘火車,臥鋪,靠在枕頭上看書,沉沉 睡去,聽鐵軌一層一層的蕩漾,在記憶中昏暗地穿行,如果我愛 誰,我們一定會乘火車去很遠的地方,一路都是風景,包括思考 時呈現出來的風景。有時候站在路邊看著人來人往,會覺得城市比沙漠還要荒涼。每個人都靠的那...

zcmu Problem H wjw的火車站

題目 time limit 1 sec memory limit 128 mb submit 112 solved 59 submit status web board wjw最近新開了一座火車站.沒錯就是火車站,因為寒假過完同學們都該返校了,所以他準備大幹一場,但是這裡有乙個問題,因為wjw的資金...