一、已知入栈顺序求所有的出栈顺序

已知入栈顺序是{1,2,3,4,5},求所有的出栈顺序?

我的思路:

既然入栈顺序固定,我觉得可以使用递归来做。

先定义一个函数,比如说叫做help。

//伪代码
void help(vetcor<int> &v,int i,stack<int> s,vetcor<int> vv)
{//v是入栈顺序v={1,2,3,4,5}//i用来记录下标的位置//s用来存储入栈的情况//vv中记录一次出栈的顺序//i一开始等于0,代表即将用v的第一个元素1入栈//接下来将会发生两种情况//要么(当i等于0的时候,即v[i])1入栈,s中push一个1进去,代表入栈,i++,递归//(假设s中有元素,当然没有元素就跳过这一步)要么s中的元素出栈,vv中记录出栈的顺序,递归//当vv的size与v的size相等时,代表已经存储完一次出栈的顺序了,接下来就不用递归了。
}

二、已知出栈顺序求所有的入栈顺序

已知出栈顺序是{1,2,3,4,5},求所有的入栈顺序?

我的思路:

首先要明白一点,先看末尾元素5,5要么是第一个入栈的,要么是最后一个入栈的。

所以入栈顺序是{5,(1,2,3,4)}或者{(1,2,3,4),5},5的顺序确定了,而1234的顺序位置不知道,但是我们可以使用跟上面同样的思路做,4要么是第二个入栈的,要么是倒数第二个入栈的,不能中途入栈,按照这个思路递归求解。

更新:后来发现了第三种情况,5可以中途入栈,比如入栈顺序{1,2}{5,4,3},首先{1,2}以任意顺序入栈出栈,其实就是当做{1,2}不存在,入栈就出去了,之后再{5,3,4}入栈,就是我们现在只看{3,4,5}这三个元素,仍然是满足我前面说的条件,即5要么是第一个入栈的,要么是最后一个入栈的。并且{1,2}出栈入栈顺序也满足前面红字的条件。

已知入栈顺序求所有的出栈顺序已知出栈顺序求所有的入栈顺序相关推荐

  1. go 已知有个排序(升序)的数组,要求插入一个元素,最后打印该数组,顺序依然是升序

    // 任意位置插入数字类型的元素 // @param slice []int 将指定元素插入的切片 // @param num int 插入的指定元素 // @param index int 插入的指 ...

  2. c语言知5个学生的4门成绩,用C 语言数组解题 :已知5个学生的4门课的成绩,要求求出全部学生的门成绩并分别求出每门课的平均成绩...

    用C 语言数组解题 :已知5个学生的4门课的成绩,要求求出全部学生的门成绩并分别求出每门课的平均成绩 关注:82  答案:2  mip版 解决时间 2021-01-28 03:07 提问者巴黎左岸 2 ...

  3. 【概率论与数理统计】猴博士 笔记 p21-23 二维连续型求边缘分布函数和密度函数,已知两个边缘密度函数求f(x,y)

    二维连续型求边缘分布函数 题型如下:给出F(x,y),让我们求F(x),F(y) 步骤: FX(x)=F(x,+∞)FY(y)=F(+∞,y)F_X(x)=F(x,+∞) \\F_Y(y)=F(+∞, ...

  4. Java基础练习题 已知长方体的长、宽、高分别是a、b、c,求其表面积和体积。

    目录 1.代码思路 2.代码实现过程 2.1.获取用户输入 2.2.计算结果并输出 3.完整代码 1.代码思路 先通过用户键盘输入获取三个数,分别为长.宽.高,然后通过长方体表面积和体积计算公式进行计 ...

  5. 由递推关系式用差分方程的方法得到通项公式实现求斐波那契数列的第n项;迭代、递归、栈、差分方程之间的本质联系以及由推广的迭代法解决“变态青蛙跳台阶”问题;汉诺塔问题的数字特征以及用递归解决的原理推导。

    最近几天在研究算法中一个比较基础且突出的问题,就是关于"递推关系式.递归.迭代.序列前k项和"之间的区别与联系. 一.斐波那契数列与差分方程 首先我们考察一个经典的算法,求斐波那契 ...

  6. 顺序表-顺序表的基本操作(初始化+指定位置元素值 + 用元素值求下标)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 一.初始化顺序表算法: vo ...

  7. 【成电860考研】经验贴汇总(公共课+专业课+复试)-扒遍所有网站:信软群、王道、知乎、csdn等,截止21年7月整理出的所有帖子-共15篇

    单词哥-2020跨考 背景 记得 18 年底的时候,好朋友那年考研,我闲的无事就拿他买的英 语一真题做了下,忘了哪一年的题了,不过结果还可以,这也为后来 辞职考研埋了根.由于长期从事英语相关的工作,而 ...

  8. 离散数学/初等数论:用“质因子分解法”和“欧几里得算法”求最大公约数gcd;“质因子分解法”和“最简算法”求最小公倍数lcm;以及对“意义”的一些看法。

    需要在开头提前说明,本篇文章仅仅用于在学习初等数论或者离散数学时候对算术基本定理的理解,实际应用的时候把结论告诉大家,想求最大公约数就用欧几里得算法是最简单的,在本篇不再赘述,有机会我会在其他文章中说 ...

  9. 信息学奥赛一本通 1172:求10000以内n的阶乘 | OpenJudge NOI 1.6 14:求10000以内n的阶乘

    [题目链接] ybt 1172:求10000以内n的阶乘 OpenJudge NOI 1.6 14:求10000以内n的阶乘 [题目考点] 1. 高精度 考察:高精乘低精 高精度计算讲解 [解题思路] ...

  10. 怎么用计算机求逆矩阵,计算机是怎么求解线性方程的(矩阵乘和求逆)

    上回我们说到,高斯老哥用消元法解线性方程,大致步骤呢就是给系数矩阵消元,运气好点呢直接整出上三角系数矩阵,得到方程组的唯一解,运气不行呢,消着消着发现整不出上三角,这时就得再讨论方程是有多解还是无解. ...

最新文章

  1. 巴蒂电信在泰米尔纳德邦推出4G Advanced网络
  2. Halcon知识: XLD的概念
  3. python数据分析是什么意思_python数据分析有什么用
  4. mock java 反射,PowerMock,Mockito和反射api的最终类
  5. 8.Java web—JSP基本语法
  6. poj 3126 BFS
  7. 关键词提取算法TF-IDF
  8. 20155201 2016-2017-2 《Java程序设计》第五周学习总结
  9. BZOJ 4030: [HEOI2015]小L的白日梦
  10. Pcshare驱动级木马及查杀
  11. flutter插件出现英文
  12. C++逆序数(奇排列和偶排列的判定)
  13. 达梦数据库-国产的荣光
  14. Node.js 给前端带来了什么?
  15. jmeter---Throughput(吞吐量)系列
  16. 2018牛客暑假多校A题GPA 01分数规划
  17. 新解决方案销售之一:原则与流程
  18. 互联网快讯:小米公益平台正式上线;极米优质投影产品获好评;三星公布三款新型车用芯片
  19. POJ3107 Godfather树的重心
  20. 计算机初级考试题库网络管理,计算机基础考试题库(含答案)【精】.doc

热门文章

  1. php thinkphp curl 模拟post,put,delete,get 请求
  2. Excel的一些操作:移动列,添加索引
  3. PHP识别粘连的英文单词,正则表达式能否写出粘连匹配(不使用es6的y)?
  4. 智慧党建云平台小程序 v2.4.9+前端(公众号+小程序一体)开源版源码下载安装教程
  5. 醉笑陪公三万场,不用诉离觞
  6. 简单的启发式搜索---算法爬山算法
  7. Javascript加载掩码
  8. Android获取华为运动健康数据(以总步数为例)
  9. less加管道tail_第二天作业
  10. 特征点匹配——FAST特征点检测