卡特兰数(Catalan)

Catalan数列

与斐波那契数列类似,并没有什么特殊的含义,只是用来解决某些问题的模型。

形如:11251442132

公式

Catn=i=1nCati1CatniCatn=4n2n+1Catn1Catn=C2nnC2nn1=C2nnn+1

例题与解释

1.经典的网格路径问题

(0,0)走到(n,m),只能向上或向右走,且不穿过y=x这条线的方案数。显然随便走的话方案数就是Cn+mn(一共走n+m步,其中有n步向右走)。考虑每一条不合法路径,也就是穿过了y=x,即触碰到了y=x+1,将第一次触碰到y=x+1的位置记作d,那么把d之后的路径沿y=x+1对称,就得到了一条从(0,0)(m1,n+1)的路径。可以发现每一条不合法路径都唯一对应一条从(0,0)(m1,n+1)的路径,这是一个双射关系,方案数为Cn+mn+1,最后答案为Cn+mnCn+mn+1。特别的,当n=m时,就是卡特兰数。

2.1、-1序列

n1n1排列,使得任意位置的前缀和大于等于0。对于不合法的方案建立双射关系:一定存在一个位置前缀和为1,假设前面有p1p+11,那么后面有np1np11,将11取反,此时后面有np11np1,总体就是有n11n+11组成的排列。同理,我们可以把此反向映射回去,得到双射关系。方案数也就是C2nnC2nn1

3.括号序列

左括号的数量始终大于等于右括号,即合法的括号序列。把左右括号看做11,同上。

4.进出栈问题

1N依次入栈,出栈顺序的方案数。考虑1的顺序:
1.1入栈;
2.2k按照某种次序出栈;
3.1出栈;
4.k+1n按照某种次序出栈。
写成递推式就表示为i=1nfi1fni,就是卡特兰数。

5.阶梯的矩形划分(树屋阶梯)。

image

一个阶梯被若干个矩形划分的方案数。
发现n个角不可能处于同一个矩形,那么枚举n个角哪一个与左下角的方块在一个矩形内,那么上方还剩下i1个角,下方还剩下ni个角,则递推式如上。

6.二叉树的构成问题(凸多边形的三角划分)

枚举左子树的大小,得到递推式fn=f0fn1+f1fn2fn1f0

7.不相交弦

在一个圆上有2n个点,两两配对,所得的弦彼此不相交,在圆上任选两个点连接,把圆分成两部分,左侧2(i1)个点,右侧2(ni)个点,得到递推式。

posted @   sandom  阅读(384)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示