标签:
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=10753
经典的出栈入栈问题:模拟栈就好了。
#include<iostream> #include<stack> #include<stdio.h> #define N 1002; using namespace std; void cal(); int a[1002]; int n; int main(){ while(scanf("%d",&n)!=EOF&&n!=0){ while(true){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]); if(a[1]==0)break; } if(a[1]==0){ printf("\n"); break; } cal(); } } return 0; } void cal(){ stack<int> stack1; int k=1,i=1; stack1.push(1); while(!stack1.empty()){ if(stack1.top()<a[k]){ i++; stack1.push(i); }else if(stack1.top()==a[k]){ stack1.pop(); k++; }else if(stack1.top()>a[k]){ break; } } if(k==n+1) printf("Yes\n"); else{ printf("No"); } }
#include<iostream> #include<stack> #include<stdio.h> #define N 1002; using namespace std; void cal(); int a[1002]; int n; int main(){ while(scanf("%d",&n)!=EOF&&n!=0){ while(scanf("%d",&a[1])!=EOF&&a[1]!=0){ for(int i=2;i<=n;i++){ scanf("%d",&a[i]); } cal(); } printf("\n"); } return 0; } void cal(){ stack<int> stack1; int k=1,i=1; for(int i=1;i<=n;i++){ stack1.push(i); while(stack1.top()==a[k]){ if(!stack1.empty())stack1.pop(); k++; if(stack1.empty())break; } } if(k==n+1) puts("Yes"); else puts("No"); }
标签:
原文地址:http://www.cnblogs.com/Yvettey-me/p/4695439.html