标签:
Input
Output
Sample Input
5 1 2 3 4 5 5 4 1 2 3 0 6 6 5 4 3 2 1 0 0
Sample Output
Yes No Yes
#include <iostream> #include <stdio.h> #include <string> #include <cstring> #include <stack> #include <cmath> #define N 1009 using namespace std; int a[N]; int n; int b[N]; int main() { int n; while(scanf("%d",&n),n) { while(scanf("%d",&a[0]),a[0]) { for(int i=1;i<n;i++) scanf("%d",&a[i]); stack<int>q; int j=0; for(int i=1,k=0;i<=n&&k<n;i++,k++) { q.push(i); while(q.size() && q.top()==a[j]) { j++; q.pop(); } } // int j=0; // for(int i=1,k=0;i<=n&&k<n;i++,k++) // { // b[k]=i; // while(a[j]==b[k]) // { // k--; // j++; // if(k<0) break; // } // // } // // //cout<<"j="<<j<<endl; if(j==n) cout<<"Yes\n"; else cout<<"No\n"; } cout<<endl; } return 0; }
#include <iostream> #include <stdio.h> #include <string> #include <cstring> #include <stack> #include <cmath> #define N 1009 using namespace std; int a[N]; int n; int b[N]; int main() { int n; while(scanf("%d",&n),n) { while(scanf("%d",&a[0]),a[0]) { for(int i=1;i<n;i++) scanf("%d",&a[i]); stack<int>q; int j=0; // for(int i=1,k=0;i<=n&&k<n;i++,k++) // { // q.push(i); // while(q.size() && q.top()==a[j]) // { // j++; // q.pop(); // } // } //int j=0; for(int i=1,k=0;i<=n&&k<n;i++,k++) { b[k]=i; while(a[j]==b[k]) { k--; j++; if(k<0) break; } } // //cout<<"j="<<j<<endl; if(j==n) cout<<"Yes\n"; else cout<<"No\n"; } cout<<endl; } return 0; }
两种方式都可行。
标签:
原文地址:http://blog.csdn.net/wust_zjx/article/details/45034449