PAT 1051 Pop Sequence[栈][难]
1051 Pop Sequence (25 分)
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain 1, 2, 3, 4, 5, 6, 7 from the stack, but not 3, 2, 1, 7, 5, 6, 4.
Input Specification:
Each input file contains one test case. For each case, the first line contains 3 numbers (all no more than 1000): M(the maximum capacity of the stack), N (the length of push sequence), and K (the number of pop sequences to be checked). Then K lines follow, each contains a pop sequence of N numbers. All the numbers in a line are separated by a space.
Output Specification:
For each pop sequence, print in one line "YES" if it is indeed a possible pop sequence of the stack, or "NO" if not.
Sample Input:
5 7 5
1 2 3 4 5 6 7
3 2 1 7 5 6 4
7 6 5 4 3 2 1
5 6 4 3 7 2 1
1 7 6 5 4 3 2
Sample Output:
YES
NO
NO
YES
NO
题目大意:给出一个栈最大容量,并且给出最大的N,要求是1....N是这样顺序入栈,输入K个检查的序列,需要判读是不是可能的弹出序列。
//我看见其实以为自己会,其实是不会的,以前见过这种题的,但是应该当时也没理解吧。
代码转自:https://www.liuchuo.net/archives/2232
#include <iostream>
#include <stack>
#include <vector>
#include<cstdio>
using namespace std;
int main() {
int m, n, k;
scanf("%d %d %d", &m, &n, &k);
for(int i = ; i < k; i++) {
bool flag = false;
stack<int> s;
vector<int> v(n + );
for(int j = ; j <= n; j++)
scanf("%d", &v[j]);//读入要检验的序列。
int current = ;//指向输入的序列。
for(int j = ; j <= n; j++) {
s.push(j);
if(s.size() > m) break;
while(!s.empty() && s.top() == v[current]) {
s.pop();
current++;
}
}
if(current == n + ) flag = true;
if(flag) printf("YES\n");
else printf("NO\n");
}
return ;
}
//真的很厉害了,学习了。
1.使用一个current来指向当前的检验序列。
2.如果栈的大小已经大于了容量,那么就退出。
3.还有这个while循环是最关键的,只要top值等于当前current指向的,那么就弹出,并且指向下一个元素,非常厉害了。
//学习了,另一位大佬的代码思路也是相同的。
PAT 1051 Pop Sequence[栈][难]的更多相关文章
- PAT 1051 Pop Sequence (25 分)
返回 1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the ...
- PAT 1051 Pop Sequence
#include <cstdio> #include <cstdlib> #include <vector> using namespace std; bool p ...
- PAT 甲级 1051 Pop Sequence (25 分)(模拟栈,较简单)
1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the ord ...
- PAT 解题报告 1051. Pop Sequence (25)
1051. Pop Sequence (25) Given a stack which can keep M numbers at most. Push N numbers in the order ...
- Pop Sequence (栈)
Pop Sequence (栈) Given a stack which can keep M numbers at most. Push N numbers in the order of 1, ...
- PAT Advanced 1051 Pop Sequence (25) [栈模拟]
题目 Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, -, N and ...
- PAT 甲级 1051 Pop Sequence
https://pintia.cn/problem-sets/994805342720868352/problems/994805427332562944 Given a stack which ca ...
- 【PAT】1051 Pop Sequence (25)(25 分)
Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, ..., N and p ...
- 1051. Pop Sequence
原题连接:https://www.patest.cn/contests/pat-a-practise/1051 题目: Given a stack which can keep M numbers a ...
随机推荐
- Android不同版本下Notification创建方法
项目环境 Project Build Target:Android 6.0 问题: 使用 new Notification(int icon, CharSequence tickerText, lon ...
- HDU 2159 FATE(二维全然背包)
中文题目就不用解释了 就是裸的二维全然背包 d[i][j]表示消耗i忍耐杀j个怪最多可获得的经验 然后就用全然背包来做了 二维背包背包只是是多了一重循环 <span style=&quo ...
- String、StringBuffer与StringBuilder区别
1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String 2.String <(StringBuffer,StringBuild ...
- C++中的自动存储、静态存储和动态存储
根据用于分配内存的方法,C++中有3中管理数据内存的方式:自动存储.静态存储和动态存储(有时也叫做自由存储空间或堆).在存在是间的长短方面,以这三种方式分配的数据对象各不相同.下面简要介绍这三种类型( ...
- Dubbo+Zookeeper视频教程
http://www.roncoo.com/course/view/f614343765bc4aac8597c6d8b38f06fd#boxTwo
- angular 2+ 路由守卫
1. 定义接口名称 /domain/login-guard.ts export interface LoginGuard { data: any; msg: string; status: boole ...
- html5文本超出部分用省略号表示
<p style="overflow:hidden; text-overflow:ellipsis;width:170px; white-space:nowrap; "> ...
- Vue基础-自定义事件的表单输入组件、自定义组件的 v-model
Vue 测试版本:Vue.js v2.5.13 学习 Vue 的自定义事件的表单输入组件,觉得文档讲的不太细致,所以这里再细化一下: 如果不用 v-model,代码应该是这样: <myinput ...
- 160505、oracle 修改字符集 修改为ZHS16GBK
修改oracle字符集 方法/步骤 oracle数据库的字符集更改 A.oracle server 端 字符集查询 select userenv('language') from dual 其中N ...
- Servlet------>jsp自定义标签3(不显示余下jsp内容)
2.自定义标签控制,jsp页面余下标签是否继续执行 EndTag.java package tag; import javax.servlet.jsp.JspException; import jav ...