输入一个数字n;和一个出栈序列.
入栈顺序是从1-n
看是否可行..如n=5,出栈序列是1 2 3 4 5,这个可行输出YES 如出栈序列是 5 4 1 2 3 则输出NO
#include "stdafx.h" #include<iostream> #include<stack> using namespace std; const int MAXN=1000+10; int n,target[MAXN]; int _tmain(int argc, _TCHAR* argv[]) { cin>>n; stack<int> s; int A=1,B=1; for(int i =1;i<=n;i++) cin>>target[i]; int ok=1; while(B<=n) { if(A==target[B]){A++;B++;} else if(!s.empty()&&s.top()==target[B]) { s.pop();B++; } else if(A<=n) s.push(A++); else{ ok=0;break; } } if(ok){ cout<<"yes"<<endl;} else cout<<"no"<<endl; return 0; }