题目链接:http://poj.org/problem?id=1363
题目大意:就是给你n个数(1~n),从1开始入栈,然后给你一个序列,问能否按这个序列出栈
思路,就是直接模拟计算判断。。。。
code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<stack> using namespace std; int a[1010]; int b[1010]; int main() { int n,i,j; while(scanf("%d",&n)==1&&n) { while(scanf("%d",&a[0])) { if(a[0]==0) break; stack<int> Q; while(!Q.empty()) Q.pop(); for(i=1;i<n;i++) { scanf("%d",&a[i]); } j=1; int s,flag=0; for(i=0;i<n;i++) { while(j<=a[i]) { Q.push(j); j++; } s=Q.top(); Q.pop(); if(s!=a[i]) { flag=1; break; } } if(flag==0) { printf("Yes\n"); } else { printf("No\n"); } } printf("\n"); } return 0; }
原文地址:http://blog.csdn.net/u010304217/article/details/39482261