题目链接:http://acm.tju.edu.cn/toj/showp.php?pid=1036
题目大意:按升序进栈,给定出栈顺序,问是否可行。
思路:判断出栈可行否的模板。
代码:
#include <iostream>
#include <stack>
using namespace std;
int main(){
int n,a[1010],i,j,k;
stack<int> s;
while(cin>>n && n)
{
while(cin>>a[1]){
if(a[1]==0)
{
cout<<endl;
break;
}
for(i=2;i<=n;i++)
cin>>a[i];
while(!s.empty())
s.pop();
k=1;
for(i=1;i<=n;i++)
{
s.push(i);
if(i==a[k])
{
while(!s.empty() && s.top()==a[k])
{
s.pop();
k++;
}
}
}
if(s.empty())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}