紫书上的,格式不太对,这个格式有点那啥

#include<cstdio>
#include<stack>
using namespace std;
const int maxn=1000+10;
int n,target[maxn];
int main()
{
    while(scanf("%d",&n)==1)
    {
        stack<int>s;
        int A=1,B=1;
        for(int i=1;i<=n;i++)
            scanf("%d",&target[i]);
        int ok=1;
        while(B<=n)
        {
            if(A==target[B])
            {
                A++;B++;
            }
            else if(!s.empty()&&s.top()==target[B])
            {
                s.pop();B++;
            }
            else if(A<=n)
                s.push(A++);
            else
            {
                ok=0;
                break;
            }
        }
         printf("%s\n",ok?"Yes":"No");
    }
    return 0;
}

这个是可以AC的

#include<stdio.h>  
#include<stack>  
using namespace std;  
stack<int>s;  
int main()  
{  
    int n, a;  
    while (scanf("%d", &n),n)  
    {  
        while (scanf("%d", &a), a)  
        {  
            int cnt = 1,i;  
            while (!s.empty())s.pop();  
            for (i = 1; i < n; i++)  
            {  
                while (cnt<=n&&(s.empty() || s.top() != a))s.push(cnt++);  
                if (s.top()!=a)  
                {  
                    printf("No\n");  
                    while (getchar() != '\n');  
                    break;  
                }  
                s.pop();  
                scanf("%d", &a);  
            }  
            if (i == n)printf("Yes\n");  
        }  
        printf("\n");  
    }  
}