PAT 1051 pop Sequence

来源:互联网 发布:ipad装旧版软件 编辑:程序博客网 时间:2024/04/30 20:49



用时:23分20秒


题意:

给出一个栈,栈的容量为m, 有n个入栈的数字1~n, 判断出栈序列是否正确


注意点:

1. 当说num出栈时,将上次入栈数 到 num 依次入栈。再判断栈顶是否正确

2.入栈后必须判断栈容量。

3.出栈时必须判断栈是否为空。


//628K94MS#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<stack>using namespace std;#define inf 0x3f3f3f3f#define M 205int main(){int fn,i,pnum,j;int m,n,k;bool flag;stack<int> s,emptys;scanf("%d%d%d",&m,&n,&k);while(k--){s = emptys;flag = true;fn = 0;for(i = 0; i < n ; i++){scanf("%d", &pnum);for(j = fn + 1; j <= pnum ;j++){s.push(j);fn = j;}if(s.size() > m) {flag = false;}if(!s.empty() && s.top() == pnum) {s.pop();}else {flag = false;}}if(flag == true)cout<<"YES"<<endl;else cout<<"NO"<<endl;}}






原创粉丝点击