02-线性结构4 Pop Sequence
来源:互联网 发布:mac 能用的刻录机 编辑:程序博客网 时间:2024/06/04 19:45
题意
有一个栈大小为M的栈,有一个数列1,2,3,…,n要入栈,你可以任意时候出栈,给你一个k个出栈的序列,判断是否可以由这个数列得到,如果可以输出YES,不能则输出NO。
解题思路
对于入栈出栈的队列我们可以知道两个关系:
(1)对于刚出栈的数x,1~x内未出栈的个数应该小于栈的大小M。
(2)对应刚出栈的数x,如果比前一个出栈的数y小,那么x~y之间的所有数应该全部出栈。
因此我们可以扫描序列,对序列进行上述判断,一旦其中之一不满足,则出栈顺序错误。
参考代码
#include <stdio.h>#include <string.h>using namespace std;#define MAXN 1000+5int a[MAXN];bool used[MAXN];int m,n,k;bool f(int x){ int cnt=0; for (int i=1;i<=x;i++) if (!used[i]) cnt++; if (cnt>m) return false; return true;}bool g(int x,int y){ for (int i=x+1;i<y;i++) if (used[i]==false) return false; return true;}int main(){ scanf("%d%d%d",&m,&n,&k); while (k--){ for (int i=0;i<n;i++) scanf("%d",&a[i]); memset(used,false,sizeof(used)); int flag=0; for (int i=0;i<n;i++){ if (f(a[i])==false){ printf("NO\n"); flag=1; break; } if (i!=0 && a[i]<a[i-1] && g(a[i],a[i-1])==false){ printf("NO\n"); flag=1; break; } used[a[i]]=true; } if (!flag) printf("YES\n"); } return 0;}
0 0
- [PTA]02-线性结构4 Pop Sequence
- 02-线性结构4 Pop Sequence
- [pta]02-线性结构4 Pop Sequence
- 02-线性结构4 Pop Sequence
- 02-线性结构4 Pop Sequence
- 02-线性结构4 Pop Sequence
- 02-线性结构4 Pop Sequence
- 线性结构4 Pop Sequence
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- PAT 02-线性结构4 Pop Sequence【JAVA实现】
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- 02-线性结构4 Pop Sequence (25分)
- Java - 1Web应用服务器1______软件开发-JAVA
- 二级指针删除链表
- 学习Hadoop第十四课(自定义分区Partitioner)
- 移动APP界面的加载动画与进度条
- idea配置 git 和maven环境
- 02-线性结构4 Pop Sequence
- java环境搭建______软件开发-JAVA
- listview oclick事件不响应原因
- 开张大吉
- 托管堆
- clojure中的map析构
- Objective-C中也存在public、protected、private的使用
- autotools
- PHP使用CURL详解