只需要纯模拟出栈即可,记得初始化哦 代码如下

#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";
        }
    }
}