車廂排程(train.cpp)

自為風月馬前卒發表於2017-03-27
車廂排程(train.cpp)
【問題描述】
       有一個火車站,鐵路如圖所示,每輛火車從A駛入,再從B方向駛出,同時它的車廂可以重新組合。假設從A方向駛來的火車有n節(n<=1000),分別按照順序編號為1,2,3,…,n。假定在進入車站前,每節車廂之間都不是連著的,並且它們可以自行移動到B處的鐵軌上。另外假定車站C可以停放任意多節車廂。但是一旦進入車站C,它就不能再回到A方向的鐵軌上了,並且一旦當它進入B方向的鐵軌,它就不能再回到車站C。
       負責車廂排程的工作人員需要知道能否使它以a1,a2,…,an的順序從B方向駛出,請來判斷能否得到指定的車廂順序。
【輸入】train.in
       輸入檔案的第一行為一個整數n,其中n<=1000,表示有n節車廂,第二行為n個數字,表示指定的車廂順序。
【輸出】train.out
       如果可以得到指定的車廂順序,則輸出一個字串”YES”,否則輸出”NO”(注意要大寫,不包含引號)。
【輸入樣例】
5
5 4 3 2 1
【輸出樣例】
YES
 
 1 #include<iostream>
 2 using namespace std;
 3 int stack[10001];
 4 int top=1;
 5 int main()
 6 {
 7     int n;
 8     cin>>n;
 9     for(int i=1;i<=n;i++)
10     {
11         int d;
12         cin>>d;
13         if(i==1)
14         {
15             top=d-1;
16             for(int j=1;j<=top;j++)
17             stack[j]=j;
18         }
19         else if(top==d)
20         {
21             stack[top]=0;
22             top--;
23         }
24         else if(d<top)
25         {
26             cout<<"NO";
27             return 0;
28         }
29     }
30     cout<<"YES";
31     return 0;
32 }

 

相關文章