输入格式可能会有点复杂 这个翻译过来大概就是依次输入1~n,然后给你一组出栈方式,判断是否合法
#include<iostream>
#include<stack>
using namespace std;
const int N=1e5+10;
int n;
int a[N];
stack<int> st;
int main()
{
while(cin>>n&&n)
{
while(1)
{
int s;
cin>>s;
if(!s)
{
cout<<endl;
break;
}
a[1]=s;
for(int i=2;i<=n;i++)
cin>>a[i];
int j=1;//设置校准编号,根据先进后出的原理,a表示的是出栈顺序
for(int i=1;i<=n;i++)
{
st.push(i);
while(!st.empty()&&st.top()==a[j])//只要出栈了,j就向后移
{
st.pop();
j++;
}
}
if(st.empty())cout<<"Yes"<<endl;
else cout<<"No"<<endl;
while(!st.empty())st.pop();
}
}
return 0;
}