九度oj 题目1366:栈的压入、弹出序列
- 题目描述:
-
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
- 输入:
-
每个测试案例包括3行:
第一行为1个整数n(1<=n<=100000),表示序列的长度。
第二行包含n个整数,表示栈的压入顺序。
第三行包含n个整数,表示栈的弹出顺序。
- 输出:
-
对应每个测试案例,如果第二个序列是第一个序列的弹出序列输出Yes,否则输出No。
- 样例输入:
-
5
1 2 3 4 5
4 5 3 2 1
5
1 2 3 4 5
4 3 5 1 2
- 样例输出:
-
Yes
No 这个题一开始提交的代码是这样#include <cstdio>
#include <cstdlib>
#include <stack> using namespace std; int num1[];
int num2[];
int n; stack <int> tmp; int main(int argc, char const *argv[])
{
while(scanf("%d",&n) != EOF) {
for(int i = ; i < n; i++) {
scanf("%d",&num1[i]);
}
for(int i = ; i < n; i++) {
scanf("%d",&num2[i]);
}
while(!tmp.empty()) {
tmp.pop();
}
int p1 = , p2 = ; while(p1 < n && p2 < n) {
if(num1[p1] != num2[p2]) {
tmp.push(num1[p1]);
p1++;
}
else {
p1++;
p2++;
}
}
while(!tmp.empty()) {
int cp = tmp.top();tmp.pop();
if(p2 < n && cp == num2[p2]) {
p2++;
}
else {
break;
}
}
if(tmp.empty()) {
puts("Yes");
}
else {
puts("No");
}
}
return ;
}这段代码在逻辑上有问题,判断是否出栈的条件写错
修改如下
#include <cstdio>
#include <cstdlib>
#include <stack> using namespace std; int num1[];
int num2[];
int n; stack <int> tmp; int main(int argc, char const *argv[])
{
while(scanf("%d",&n) != EOF) {
for(int i = ; i < n; i++) {
scanf("%d",&num1[i]);
}
for(int i = ; i < n; i++) {
scanf("%d",&num2[i]);
}
while(!tmp.empty()) {
tmp.pop();
}
int p = ; for(int i = ; i < n; i++) {
tmp.push(num1[i]);
int cp = tmp.top();
while(p < n && cp == num2[p]) {
tmp.pop();
p++;
if(tmp.empty()) {
break;
}
cp = tmp.top(); }
}
if(tmp.empty()) {
puts("Yes");
}
else {
puts("No");
}
}
return ;
}注意32行,p++必须在break之前
九度oj 题目1366:栈的压入、弹出序列的更多相关文章
- 【剑指offer】栈的压入弹出序列,C++实现(举例)
原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为第一个序列的出栈序列.注意 ...
- 剑指offer - 栈的压入弹出序列 - JavaScript
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 ...
- 剑指offer-面试题22.栈的压入,弹出序列
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第 二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等. 例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1 是该压栈 ...
- 剑指Offer20 栈的压入弹出序列是否正确
/************************************************************************* > File Name: 20_IsPopO ...
- 剑指offer-栈的压入弹出序列21
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...
- 剑指offer-面试题31-栈的压入弹出序列-栈
#include<iostream> #include<string.h> #include<algorithm> #include<cmath> #i ...
- 剑指offer 栈的压入弹出 顺序
判断: 如果下一个弹出的数字刚好是栈顶元素,那么直接弹出 如果下一个弹出的数字不在栈顶,我们要把压栈序列中,还没有入栈的数字压入辅助栈,知道把下一个需要弹出的数字压入栈顶 如果所有的数字都入栈,但是仍 ...
- 九度oj题目1342:寻找最长合法括号序列II
题目1342:寻找最长合法括号序列II(25分) 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:886 解决:361 题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然 ...
- 九度oj 题目1342:寻找最长合法括号序列II
题目描述: 假如给你一个由’(‘和’)’组成的一个随机的括号序列,当然,这个括号序列肯定不能保证是左右括号匹配的,所以给你的任务便是去掉其中的一些括号,使得剩下的括号序列能够左右括号匹配且长度最长,即 ...
随机推荐
- 加载动画插件spin.js的使用随笔
背景: 在请求后台的“漫长”等待过程中,为了提升用户体验,需要一个类似 的加载动画效果,让用户明确现在处于请求过程中,而不是机子down掉或者网站死了 静态demo(未与后台交互): HTML代码如 ...
- UVA 1599, POJ 3092 Ideal Path 理想路径 (逆向BFS跑层次图)
大体思路是从终点反向做一次BFS得到一个层次图,然后从起点开始依次向更小的层跑,跑的时候选则字典序最小的,由于可能有多个满足条件的点,所以要把这层满足条件的点保存起来,在跑下一层.跑完一层就会得到这层 ...
- codeforce Gym 100500E IBM Chill Zone (SG函数)
关于sg函数这篇blog讲得很详细http://blog.csdn.net/logic_nut/article/details/4711489. sg函数的价值在于把复杂的游戏拆分成简单的游戏,然后通 ...
- Dungeon Master的两种方法
Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...
- 前端安全系列(二):如何防止CSRF攻击?
前端安全系列(二):如何防止CSRF攻击? 背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XS ...
- C++内存溢出和内存泄漏?
1.内存溢出 内存溢出是指程序在申请内存时没有足够的内存空间供其使用.原因可能如下: (1)内存中加载的数据过于庞大: (2)代码中存在死循环: (3)递归调用太深,导致堆栈溢出等: (4)内存泄漏最 ...
- oracle系統表、數據字典介紹與日常問題診斷
oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...
- Android深度探索总结
Android深度探索前四章总结 通过这几章的学习真实体会到“移植”的概念:为特定设备定制Android的过程,但是移植的过程中开发最多的就是支持各种硬件设备的Linux驱动程序,本章对Android ...
- bzoj4666 小z的胡话
题目描述: bz 题解: 乱搞好题哇. 众所周知斐波那契数列是有循环节的. 我们可以搞出在模$10^x$下与所给得数同余的集合,那么在模$10^{x+1}$下,同余集合一定是原集合及循环若干循环节的大 ...
- cephfs 挂载 卸载
#挂载 sudo ceph-fuse -m 10.1.xx.231:6789,10.1.xx.232:6789,10.1.xx.233:6789 -r /MySQL-BK /data/backup # ...