码迷,mamicode.com
首页 > 其他好文 > 详细

火车进出栈问题(Catalan数)

时间:2020-02-27 19:20:46      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:lan   info   转化   image   jpa   操作   font   等于   img   

火车进出栈问题即:

一个栈(无穷大)的进栈序列为 1,2,3,4,...,n 求有多少个不同的出栈序列?

将问题进行抽象, 假设‘+‘代表进栈, 则有‘-‘代表出栈

那么如果进栈序列为123, 则:

+ + + - - - 将1, 2, 3压入栈后再将3, 2, 1弹出 得到出栈序列为321

同样, + - + - + - 得到出栈序列为123

上面所述的均为合法进出栈的序列 可发现规律: 序列中 + 的个数等于 - 的个数

但是如 + - - + +  - 这样的序列, 在栈为空时仍进行弹出操作的, 为非法序列

进一步将 + - 序列抽象到平面直角坐标系中, + 代表向右走一格, -代表向上走一格, 可知y = x直线下方的序列均为合法序列, 如下图所示

 

技术图片

 

到此, 火车进出栈问题已经转化为单调路径的问题

推导出公式:

 技术图片

 

即得出栈序列的总数

 

火车进出栈问题(Catalan数)

标签:lan   info   转化   image   jpa   操作   font   等于   img   

原文地址:https://www.cnblogs.com/tedukuri/p/12373422.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!