栈的出栈顺序有多少种

题目

N个数依次入栈,出栈的顺序有多少种?

直接公式

令h(0) = 1,h(1) = 1
卡特兰数满足递推式:
h(n) = h(0) * h(n - 1) + h(n -2) + ... + h(n -1)h(0) (n >= 2)
递推关系的解为:

公式1

递推关系的另类解:

公式2

常规分析

  • 首先,我们设f(n)代表序列个数为n的出栈序列种数。同时我们假设第一个出栈的序数是k。
  • 第一个出栈的序数k将1n的序列分成两个序列;其中一个是1k-1,序列个数为k-1;另一个是k+1~n,序列个数是n-k。
  • 此时,我们若把k视为一个确定的序数,那么根据乘法原理,f(n)的问题就等价于序列个数为k-1的出栈序列种数乘以序列个数为n-k的出栈序列种数,即选择k这个序数的出栈组合为f(k-1)*f(n-k)。
  • 而k可以选1到n,所以再根据加法原理,将k取不同值的序列种数相加,得到的总序列种数为:f(n) = f(0)f(n-1) + f(1)f(n-2) + ... + f(n-1)f(0)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你的夜,我为你挑灯 渡你,到我的彼岸 长夜漫漫 只想有你相伴 你的夜,我为你挑灯 不管缘聚缘散 你好,我心安 今生...
    文山鹿阅读 341评论 73 27
  • 因为从小生长在一个人人追求完美甚至要强的家庭里,必然会有很多规矩。 比如,作为一个女孩,吃饭的时候应该怎么样,和别...
    毛毛爱折腾阅读 336评论 0 0
  • 叶散的时候,你明白欢聚。 花开的时候,你明白青春。 谁来了又走了,谁让你变成了有故事的人。 没有过去,没有曾经,也...
    坐看云起时_wei阅读 568评论 0 0
  • 其实也有那种突然对某个人有意见的时候…………要是都写出来可能就没朋友了………………哇靠我这个人怎么这样的(;′⌒`)
    深海酸橙阅读 205评论 0 0