栈——验证栈序列(洛谷 P4387)
题目选自洛谷P4387
是一道栈的题,能够帮助理解栈的更深层次。
题目大意就是判断序列是否可能是对应序列的出栈序列。
如何判断是不是合理的出栈序列呢?
对于序列a 我们依次和序列b来比较,如果不相同,则把a的当前数字入栈,如果相同,则出栈(不止出栈一次,可能连续出栈,但还没循环到a的下一个数字),
最后遍历完a的所有数字后,如果栈不为空,则代表这个出栈序列不合理,若为空则表示可以
题目描述
给出两个序列 pushed 和 poped 两个序列,其取值从 1 到 n(n≤100000)。已知入栈序列是 pushed,如果出栈序列有可能是 poped,则输出 Yes
,否则输出 No
。为了防止骗分,每个测试点有多组数据。
输入格式
第一行一个整数 q,询问次数。
接下来 q 个询问,对于每个询问:
第一行一个整数 n 表示序列长度;
第二行 n 个整数表示入栈序列;
第二行 n 个整数表示出栈序列;
输出格式
对于每个询问输出答案。
输入输出样例
输入 1
2 5 1 2 3 4 5 5 4 3 2 1 4 1 2 3 4 2 4 1 3
输出 1
Yes No
解题代码:
#include<stdio.h>
#include<iostream>
#include<stack>
using namespace std;
int n,q;
int a[100001],b[100001];
stack<int> s;
void shuru(){cin>>q;for(int i=1;i<=q;i++)cin>>a[i];for(int i=1;i<=q;i++)cin>>b[i];
}
int main(){cin>>n;while(n--){shuru();int j=1;for(int i=1;i<=q;i++){s.push(a[i]);while(!s.empty() && s.top()==b[j]){s.pop(); j++;} }if(s.empty()) cout<<"Yes"<<endl;else cout<<"No"<<endl;while(!s.empty()) s.pop(); //清空上一次的栈}return 0;
}
栈——验证栈序列(洛谷 P4387)相关推荐
- [Catalan]求解随机出栈可能数(洛谷P1044题题解,Java语言描述)
题目要求 P1044题目链接 分析 题意就是:N个数依次进栈,可随机出栈,算一下可能的出栈序列数. 其实这个就是Catalan啊,如果数据结构与算法有一定的刷题积累的学生应该经常做这样的About栈的 ...
- 洛谷--橙色百道DP总结
最近刷完了洛谷橙色DP大约一百道,算是发现了一些套路,就部分题目做一些总结. 大概分为三类 第一类,九大背包及其衍生 第二类,经典DP模型,如LCS,LIS等 第三类,实际问题背景的普通,环形,树上D ...
- 信息学奥赛一本通 1924:【03NOIP普及组】栈 | 洛谷 P1044 [NOIP2003 普及组] 栈
[题目链接] ybt 1924:[03NOIP普及组]栈 洛谷 P1044 [NOIP2003 普及组] 栈 [题目考点] 递推.递归 栈 [解题思路]:一维递推 设数组a,a[i]表示i个数组成的数 ...
- 946. 验证栈序列
2020-05-15 1.题目描述 验证栈序列 2.题解 这个题目我本科的一位老师在给我们上算法课的时候讲过,他说关键是要明白我们什么时候需要入栈,什么 时候需要出栈,题目是要返回pushed数组能不 ...
- 栈——括号匹配(洛谷 Uva673)
题目选自洛谷Uva673 括号匹配是和栈有关的经典算法问题 每次入栈的时候判断栈的顶部是不是这个符号的另一半,如果是就pop并且这个符号也不入栈,如果不是就入栈.最后判断栈是否为空,如果为空,说明正确 ...
- 洛谷 P2186 小Z的栈函数
洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...
- 二分图——洛谷P1155 双栈排序
https://daniu.luogu.org/problem/show?pid=1155 二分图染色+模拟 1.首先考虑一个简单情况--单栈排序,显然有这样的一个事实: a[i]和a[j] 不能压入 ...
- 青铜三人行之验证栈序列
先说一个消息,为了方便互相交流学习,青铜三人行建了个微信群,感兴趣的伙伴可以扫码加下面的小助手抱你入群哦! 青铜三人行--每周一题@验证栈序列 视频讲解 力扣题目 验证栈序列 给定 pushed 和 ...
- 洛谷P1155 双栈排序
这题什么毒瘤......之前看一直没思路,然后心说写个暴搜看能有多少分,然后就A了??! 题意:给你一个n排列,求它们能不能通过双栈来完成排序.如果能输出最小字典序方案. [update]这里面加了一 ...
最新文章
- webapp检测安卓app是否安装并launch
- XCode 4.3 不使用新特性 适用低版本的的项目 不是初学者就可以跳过了(转)
- java异常处理图片_Java处理图片时出现异常
- 51Nod 1102 面积最大的矩形 +1272 最大距离 单调栈
- 利用CMD在vim中直接编译
- 使用ubuntu的新立德下载和安装的Eclipse无法在其help菜单中连接并安装ADT
- java提示需要标识符,java错误需要标识符
- 保险未起保是投保成功了吗?
- UDP协议和socketserver以及文件上传
- QQ第三方授权登录(带详细源码)
- 安卓投屏软件_该内容只能用miracast投屏
- 无法找到 Adobe PDF资源文件。“Acrobat PDFMaker“您必须具有”管理员”权限方可安装这些文件...错误怎么解决
- 无人机动力组装与测试-电机、螺旋桨、电调、电池
- 【爬虫】使用request模块进行爬虫
- CANoe软件之离线数据分析
- 解决“电脑网络无法连接“问题
- 计算机ata考试题库答案,ATA考试系统题库【机房系统】
- “终于我从字节离职了...“一个年薪40W的测试工程师的自白..
- Holodesk VS CarbonData
- asic码转16进制c语言,十六进制数转换成ascii码