描述:如果以序列“1,2,3,4”作为一个栈(初始为空)的输入,那么可得到输出序列“1,2,3,4”或“4,3,2,1”或“2,3,1,4”等等,但是肯定得不到输出序列“4,1,2,3”或“3,1,2,4”等等。请编写一个程序,判断能否通过一个栈得到给定的输出序列。

输入说明:每组数据由两行构成,第一行只有一个整数n(<10),表示序列长度,同时表示栈的输入序列为“1,2,3,…,n”;第二行为n个整数,表示需要判断的出栈序列,整数之间以空格分隔。

输出说明:输出一个yes或no(表示能否通过栈得到该序列)。

输入样

6

3 4 2 1 5 6

输出样:yes

提示根据栈的后进先出特性进行判断

读题

基本看不懂这什么意思。主要思路来自于文章:XDOJ_305 判断堆栈出栈序列是否有效 C语言描述_m0_46951573的博客-CSDN博客

入栈出栈规律·_u014424628的专栏-CSDN博客_栈的出栈序列口诀

还去洛谷上面看了题解(题目有出入)。啊……洛谷的题解真的好详细巨详细。登录 - 洛谷https://www.luogu.com.cn/problem/solution/P4387大概的意思就是:出栈是随机的,出栈和入栈是同时发生的,就导致顺序的不固定。

所以处理的思路就是:按照给的顺序模拟。如果stack的顶部和所给相同,就出,如果不一致,就继续入。判断结果:如果n全部入栈并且stack能够空掉就说明成功。

有了思路还是比较容易的。

代码

有在学习C++!!

#include <stack>
#include <iostream>
using namespace std;
int main()
{int n,i,k=0;scanf("%d",&n);int a[100]={0};for(i=0;i<n;i++)scanf("%d",&a[i]); stack<int> mystack;for(i=1;i<=n;i++){mystack.push(i);while(a[k]==mystack.top())//head,top相等 {mystack.pop(); k++;if(mystack.empty())//一定要注意! 这里有个出栈的条件 break; }}if(mystack.empty())cout<<"Yes"<<endl;else cout<<"No"<<endl;
}

数据结构:判断堆栈出栈序列是否有效相关推荐

  1. xdoj判断堆栈出栈序列是否有效c++

    我在leetcode上写过类似的题,这个代码在xdoj上只能得***50***分,跪求各位大佬挑挑毛病. #include<stack> #include<iostream> ...

  2. 序列元素IT面试题——判断合法出栈序列

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 在技巧笔试口试上,我们常常会碰到这样一类题型,如给你一个入栈序列,然后再让你判断几个序列是否有可能为它的出栈序列,如: 入栈序 ...

  3. 栈 - 关于出栈序列,判断合法的出栈序列

    文章目录 1 引例 2 做题方法 3 原因 3.1 选项D(4 3 1 2)的模拟 1 引例 (例)设栈的入栈序列是 1 2 3 4,则下列不可能是其出栈序列的是( ). A. 1 2 4 3 B. ...

  4. 给定入栈序列,判断一个串是否为出栈序列

    剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...

  5. PAT甲级1051 Pop Sequence:[C++题解]模拟栈、判断序列是否是合法的出栈序列

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 题意:将1~N压栈,判断给定序列是否是合法的出栈序列. 对于序列1~N中的每个值i,先将其压入栈.然后对于它就有两种处理方法:要么压 ...

  6. 数据结构实验之栈与队列七:出栈序列判定

    Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...

  7. 数据结构实验之栈七:出栈序列判定

    题目描述 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序列. 例如序列 ...

  8. [程序人生]: 判断字符串是否为出栈序列

    题目: 给出一个字符串Initial和另一个字符串Detection,判断Detection是否为Initial的一个出栈序列 如:Initial = 123456, Detection = 2136 ...

  9. 详解+G - 数据结构实验之栈与队列七:出栈序列判定

    理解: 出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现.比如4,1,2,3,5. 思路:输入一个数,然后不断按照顺序 ...

最新文章

  1. 批处理中百分号%的作用
  2. 你认识这些布道师吗?
  3. SSE命令示例代码(整型、读写控制寄存器、混杂、矩阵变换)
  4. Xcode 自带单元测试
  5. 适用于ATI卡的GPU计算MD5的小程序源码,基于AMD APP SDK开发
  6. ”易书网“开发总结——技术篇
  7. 美团成都一面面经及详细答案
  8. 怎么修改打印机服务器权限,Win7怎么设置网络打印机管理权限?
  9. 大气科学领域必备的模型软件汇总丨WRF、WRF-CMAQ、WRF-Chem、WRF-Hydro、WRF DA、PMF、MCM、CAMx、SMOKE、CMIP6等
  10. DS1308 Datasheet
  11. backdrop-filter,让你的网站熠熠生”毛’
  12. 如何制作流程图?流程图制作软件哪个好
  13. bilibili老版本_bilibili网页版下载
  14. ccf认证--201809-1 卖菜(100分)
  15. Jupyter Notebook连接服务器失败
  16. MM定理(Modigliani-Miller)证明与图解
  17. 哈哈哈哈哈哈不错测试一下测试一下哈哈哈哈哈哈不错测试一下测试一下
  18. 天干地支与阴阳五行的关系
  19. mysql如何不停机迁移_如何实现真正的不停机数据迁移?
  20. INS/GPS组合导航类型简介

热门文章

  1. KSO - .net6项目中使用RabbitMQ实际项目代码和思路讲解,包括各种踩坑
  2. 解除微信接收文件只读属性的最新解决方案,新版微信3.9.2.23也能用,适用范围更广,没有微信版本要求,不需要微信降级
  3. linux 嵌入式 快照_技术|定制嵌入式 Linux 发行版
  4. 为什么要抽时间读书?为什么要写读书笔记?
  5. 微信小程序html5音频,微信小程序音频怎么开发?10分钟看懂(官方教程)
  6. 新应用——合同管理应用,实现合同无纸化管理
  7. 手机相机ISO是什么
  8. 【游戏开发实战】使用Unity制作水果消消乐游戏教程(三):水果拖动与交换逻辑
  9. B站小迪安全笔记第十五天-SQL注入之Oracle,mongoDB等注入
  10. 不被拦截的绿标域名我们如何申请认证呢?