有多少种出栈顺序问题

题目:现在有A、B、C、D四个元素,只能按照ABCD的顺序入栈,但是出栈的时机是随意的,求共有多少种出栈顺序。

分析

假设只有一个元素,只有一种出栈顺序:f(1) = 1
假设有两个元素,有两种出栈顺序:f(2) = 2
假设有三个元素,有5种出栈顺序:f(3)=5 即 123、132、213、321、231
一共有四个元素,那么对每个元素来说,出栈的时机也就有四个可选。
对元素A来说:
  选择1号位置:即A只能入栈后马上出栈,后续三个元素有f(3)种方案
  选择2号位置:A之前有一个元素出栈(它只可能是B),A之后有两个元素出栈,因此是f(1)xf(2)
  选择3号位置:同理,f(2)xf(1)
  选择4号位置:同理:f(3)
最终,f(4)=f(3)+f(1)xf(2)+f(2)xf(1)+f(3)=14

规律为:递推公式 f(n)=f(n-1)+f(1)xf(n-2)+...+f(n-2)xf(1)+f(n-1)

卡特兰数

实际上网上有一个直接求解的公式,C(2n,n)/(n+1),推导涉及高等数学和组合数学比较深,这里就不研究了。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap