zoukankan      html  css  js  c++  java
  • 可能的出栈序列问题

    可能的出栈序列问题

    首先的前提是进栈一定是要按照顺序进栈如1、2、3、4的顺序,如果第一个出的是4,那么要依次先进栈1、2、3、4,
    然后出栈,这样的话第一个是4,没有其他的元素可以再进栈了,所以只能按顺序出栈,这样出栈的顺序就是4、3、2、1。
    假如出栈的顺序是3、4、2、1,你就要先分析出3的情况,只有先将1、2、3入栈,然后将3出栈。然后进栈4,再出栈4、2、1.

    再如果出栈的顺序是3、2、4、1或3、2、1、4,先将1、2、3入栈,再出栈3、2,如果这个时候是前面的序列,就先进4,再出栈4、1,如果是后面的出栈顺序就出1,然后再入栈4,再出栈4,这样就会得到上面的序列了。

     

    可以按照下面的方法来判断的:

    假如入栈顺序为1234,给定一个出栈序列,如2431,它是合法的。
    因为对于出栈序列中的每一个数字,在它后面的、比它小的所有数字,一定是按递减顺序排列的。


    例如:

    假如出栈序列为4123,显然不满足上述要求,因为对于4,它后面比它小的数字序列为123,递加,所以不是合法出栈序列。
    若出栈为3142,也不合法,因为3后面比它小的1和2不是递减排列的。
    若出栈为1234,则合法,因为对于每一个数字,它后面没有比它小的数字。
    这种方法用来排除那些错误的出栈顺序很有效。


  • 相关阅读:
    Qt读取JSON和XML数据
    IOS设计模式学习(19)策略
    Android学习笔记(二)之异步加载图片
    ETL-Career RoadMap
    HDU 1501 & POJ 2192 Zipper(dp记忆化搜索)
    CodeForces 242E
    推荐:室内定位API
    基于单片机的电子密码锁的实现
    [nagios监控] NRPE: Unable to read output 的原因及排除
    (ubuntu)在andorid andk工程中使用ccache加速编译速度
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989392.html
Copyright © 2011-2022 走看看