思路:1~N个数每来一个数就入栈,若栈顶元素与 给出序列中l所指向的元素相等则出栈直到栈为空或不相等为止,如最后栈为空则Yes不为空则No
#include"cstdio" #include"cstring" using namespace std; const int MAXN=1005; int a[MAXN]; int N; int s[MAXN]; int cnt; int main() { while(scanf("%d",&N)!=EOF&&N) { while(scanf("%d",&a[1])!=EOF&&a[1]!=0) { cnt=0; for(int i=2;i<=N;i++) { scanf("%d",&a[i]); } int l=1; for(int i=1;i<=N;i++) { s[cnt++]=i; while(s[cnt-1]==a[l]&&cnt!=0) { cnt--; l++; } } if(cnt==0) printf("Yes\n"); else printf("No\n"); } printf("\n"); } return 0; }
时间: 2024-10-05 17:57:14