https://vjudge.net/problem/UVA-514
判断出栈是否合法的方法- -
从出栈顺序找入栈顺序倒推一遍
简单模拟 ==
若这个数先出栈
就入栈中一直入到可以找到这个数为止
#include<bits/stdc++.h>
using namespace std;
stack<int > s;
int n,j,x,z;
int main()
{
while(cin>>n&&n){
z=1;
while(1&&z){
while(s.size()) s.pop();
for(int i=0,j=1;i<n;i++){
scanf("%d",&x);
while(s.empty()||s.top()!=x&&j<=n) s.push(j++);
if(s.top()==x) s.pop();
if(!x) {z=0;printf("\n");break;}
}
if(z) printf("%s\n",s.empty()?"Yes":"No");
}
}
}