卡特兰数(Catalan)
Catalan数列
与斐波那契数列类似,并没有什么特殊的含义,只是用来解决某些问题的模型。
形如:
公式
例题与解释
1.经典的网格路径问题
从走到,只能向上或向右走,且不穿过这条线的方案数。显然随便走的话方案数就是(一共走步,其中有步向右走)。考虑每一条不合法路径,也就是穿过了,即触碰到了,将第一次触碰到的位置记作,那么把之后的路径沿对称,就得到了一条从到的路径。可以发现每一条不合法路径都唯一对应一条从到的路径,这是一个双射关系,方案数为,最后答案为。特别的,当时,就是卡特兰数。
2.1、-1序列
将个与个排列,使得任意位置的前缀和大于等于。对于不合法的方案建立双射关系:一定存在一个位置前缀和为,假设前面有个,个,那么后面有个,个,将取反,此时后面有个,个,总体就是有个和个组成的排列。同理,我们可以把此反向映射回去,得到双射关系。方案数也就是。
3.括号序列
左括号的数量始终大于等于右括号,即合法的括号序列。把左右括号看做,同上。
4.进出栈问题
依次入栈,出栈顺序的方案数。考虑的顺序:
1.入栈;
2.按照某种次序出栈;
3.出栈;
4.按照某种次序出栈。
写成递推式就表示为,就是卡特兰数。
5.阶梯的矩形划分(树屋阶梯)。
一个阶梯被若干个矩形划分的方案数。
发现个角不可能处于同一个矩形,那么枚举个角哪一个与左下角的方块在一个矩形内,那么上方还剩下个角,下方还剩下个角,则递推式如上。
6.二叉树的构成问题(凸多边形的三角划分)
枚举左子树的大小,得到递推式。
7.不相交弦
在一个圆上有个点,两两配对,所得的弦彼此不相交,在圆上任选两个点连接,把圆分成两部分,左侧个点,右侧个点,得到递推式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!