Yes
代码如下:这题很简单,我把思路都注释在了代码上了!
#include<iostream> #include<cstdio> #include<stack> using namespace std; int n,bs[2014]; int main() { while(cin>>n,n) { while(cin>>bs[1],bs[1]) { stack<int>Q; int flag=1; for(int i=2; i<=n; i++) cin>>bs[i];//输入从B车站出去的顺序! int A=1,B=1; while(B<=n) { if(A==bs[B]) A++,B++;//如果是一个一个进出站台的话!说明车厢直接出栈 else if(!Q.empty()&&Q.top()==bs[B])//在A站的火车按某个顺序进站C之后, //在C站的最后一个火车编号如果和当前在B站的第一个火车编号一样的话!就表明符合要求!出栈操作! Q.pop(),B++; else if(A<=n)//开辟一个栈,按顺序存储当前比bs[i]小的车厢 Q.push(A++); else { flag=0; break;//都不符合的话,就....... } } printf("%s\n",flag?"Yes":"No"); } cout<<endl; } return 0; }
原文地址:http://blog.csdn.net/u014004096/article/details/38265847