铁轨问题(栈到初步学习)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //STL 栈的基础题,其中target[i]代表序列中第i个车厢的编号,根据先进后出到规则写出下列代码 2 3 #include <cstdio> 4 #include <stack> 5 using namespace std; 6 const int MAXN=1000+10; 7 8 int n,target[MAXN]; 9 10 int main() 11 { 12 while(scanf("%d",&n)==1) 13 { 14 stack<int> s; 15 int A=1,B=1; 16 for(int i=1;i<=n;i++) 17 scanf("%d",&target[i]); 18 int ok=1; 19 while(B<=n) 20 { 21 if(A==target[B]) 22 { 23 A++; 24 B++; 25 } 26 else if(!s.empty() && s.top()==target[B]) 27 { 28 s.pop(); 29 B++; 30 } 31 else if(A<=n) 32 { 33 s.push(A++); 34 } 35 else 36 { 37 ok=0; 38 break; 39 } 40 } 41 printf("%s\n",ok?"Yes":"No"); 42 } 43 return 0; 44 }