哦,我知道了。
但是我改了之后还是错的:
```
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
#define N 1000
stack <int> q;
int target[N];
int n;
bool check(){
int a=1,b=1;
bool flag=1;
while(b<=n){
if(a==target[b]){
a++;
b++;
}
else if(!q.empty() && q.top()==target[b]){
q.pop();
b++;
}
else if(a<=n){
q.push(a++);
}
else{
flag=0;
break;
}
}
if(!flag) return false;
else return true;
}
int main()
{
while(scanf("%d",&n)==1){
if(n==0) return 0;
int i=1;
for(i=1;i<=n;i++){
scanf("%d",&target[i]);
if(target[i]==0) break;
}
if(i==2) continue;
else {
if(check()) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
```
by OI_lover @ 2018-08-06 15:27:20
这题输出格式很变态的。。。
by xiangling @ 2018-08-06 15:35:39