37 棧 天使之城

2021-08-21 11:25:00 字數 1187 閱讀 5913

天使城有乙個火車站,每輛火車都從a方向駛入車站,

再從b方向駛出車站。

為了排程火車,火車站設有停放軌道,可存放5輛火車。已知從a進入車站順序為1、2、3……。現在給你乙個排程方案,判斷是否可行,如果可行,輸出出站順序。

有以下幾種排程方法:

a.     將a上的頭一輛車駛出b方向

b.     將a上的頭一輛車停入暫停軌道

c.     將暫停軌道上最外面的車駛出b方向

輸入第一行乙個整數n(n<30)表示排程方案步驟數目。

下一行乙個字串,有n個大寫字母,表示排程方法。

輸出若不可行(暫停站滿了還停車、暫停站空了還出車),則輸出一行「no」。

若可行,輸出一行「yes」,再輸出若干行,每行乙個整數,表示車出站序列。

[樣例輸入1]6abbcca [樣例輸入2]5bacac
[樣例輸出1]yes1324 [樣例輸出2]no
code:

#include #include #define size 31

using namespace std;

int outp[size]; // 儲存出棧順序

stacks;

int main(void)

else if (c == 'b') // 入棧

s.push(++k);

} else // 出棧

outp[++outp[0]] = s.top();

s.pop();

} }printf("yes\n");

for (i = 1; i <= outp[0]; i++)

return 0;

}int n, k = 0, i;

char c;

scanf("%d", &n);

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

else if (c == 'b') // 入棧

s.push(++k);

} else // 出棧

outp[++outp[0]] = s.top();

s.pop();

} }printf("yes\n");

for (i = 1; i <= outp[0]; i++)

return 0;

}

codevs2821 天使之城

時間限制 1 s 空間限制 128000 kb 題目等級 gold 天使城有乙個火車站,每輛火車都從a方向駛入車站,再從b方向駛出車站。為了排程火車,火車站設有停放軌道,可存放5輛火車。已知從a進入車站順序為1 2 3 現在給你乙個排程方案,判斷是否可行,如果可行,輸出出站順序。有以下幾種排程方法 ...

codevs 2821 天使之城

題目描述 description 天使城有乙個火車站,每輛火車都從a方向駛入車站,再從b方向駛出車站。為了排程火車,火車站設有停放軌道,可存放5輛火車。已知從a進入車站順序為1 2 3 現在給你乙個排程方案,判斷是否可行,如果可行,輸出出站順序。有以下幾種排程方法 a.將a上的頭一輛車駛出b方向 b...

每日一題 37 兩個佇列實現棧

題目來自劍指offer 題目 兩個佇列實現棧 思路 乙個佇列存資料,另乙個佇列作為轉存資料的臨時佇列。注意 哪個佇列存資料不定,那個佇列作為臨時佇列也不定。壓棧時 找到乙個有資料的佇列,放入資料。如果兩個佇列都為空,則隨便找乙個佇列存資料。出棧時 找到那個存資料的佇列,設其資料個數為n。1 對數列執...