只需要纯模拟出栈即可,记得初始化哦 代码如下
#include<bits/stdc++.h>
using namespace std;
stack<int>sk;
int a[100010];
int main(){
while(1){
int n;cin>>n;
if(n==0)break;
while(1){
cin>>a[1];//输入
if(a[1]==0){//特判0
cout<<'\n';
break;
}
for(int i=2;i<=n;i++)cin>>a[i];
while(sk.size())sk.pop();//初始化
int j=0;
for(int i=1;i<=n;i++){
sk.push(i);
while(sk.size()&&sk.top()==a[j+1])sk.pop(),j++;//检查出队规则
}
if(j==n)cout<<"Yes\n";//输出
else cout<<"No\n";
}
}
}