UVA - 514 Rails-栈
生活随笔
收集整理的這篇文章主要介紹了
UVA - 514 Rails-栈
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
某城市有一個(gè)火車站,鐵軌鋪設(shè)如圖6-1所示。 有n節(jié)車廂從A方向駛?cè)胲囌?#xff0c;按進(jìn)站順
序編號(hào)為1~n。 你的任務(wù)是判斷是否能讓它們按照某種特定的順序進(jìn)入B方向的鐵軌并駛出
車站。 例如,出棧順序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。
為了重組車廂,你可以借助中轉(zhuǎn)站C。 這是一個(gè)可以停放任意多節(jié)車廂的車站,但由于
末端封頂,駛?cè)隒的車廂必須按照相反的順序駛出C。 對(duì)于每個(gè)車廂,一旦從A移入C,就不
能再回到A了;一旦從C移入B,就不能回到C了。 換句話說(shuō),在任意時(shí)刻,只有兩種選擇:
A→C和C→B。
Sample Input
5
1 2 3 4 5
5 4 1 2 3
0
6
6 5 4 3 2 1
0
0
Sample Output
Yes
No
Yes
解題思路:
模擬棧。
代碼如下:
#include <iostream> #include <stack> using namespace std; const int N = 1010; int a[N]; int n; int main() {while (cin >> n,n) {while (cin >> a[1],a[1]) {for (int i = 2; i <= n; i++)cin >> a[i];int j = 1;stack<int>s;for (int k = 1; k <= n; k++) {s.push(k);while (!s.empty() && s.top() == a[j]) {j++;s.pop();}}if (s.empty() && j == n + 1)cout << "Yes" << endl;elsecout << "No" << endl;}cout << endl;}return 0; }總結(jié)
以上是生活随笔為你收集整理的UVA - 514 Rails-栈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 干夜场的喝酒怎么减肥
- 下一篇: UVA-11988 悲剧文本-静态链表