卡特兰数与斯特林数
卡特兰数
前言:这里我们定义 为卡特兰数的第 项。
递归定义式:
理解:对于 个点构成的二叉树,其形态共有 个,你设根节点的左儿子子树大小为 ,即形态有 个,右子树大小为 ,即形态有 个,相乘即可。
组合定义式:
这个后面证
卡特兰数的增长大约为
例题:给定 个 和 个 组成的一个 个元素的排列,要求该排列的任意前缀, 的数量不能少于 的数量,求满足排列的个数
结论:排列个数为 个
证明:我们可以建一个 的网格, 表示向上走, 表示向右走,最终我们从 走到 ,对于任意前缀 的数量不能少于 的数量这个限制,我们可以画出对角线,对角线以下的是合法的,而对角线上面的是不合法的,接着我们在对角线上再隔一格画一条线 ,对于不合法的,我们沿 对称回来,这样他只会超过对角线最多一格,而他最后只会走到 ,即
错位排列
例题:有 个盒子编号为 到 ,有 个球编号为 到 ,求编号为 的球不放入编号为 的盒子的方案数
设 表示 个元素的错位排列的方案数,则
证明:当我们考虑到第 个时
- 前 个元素全部错位排列,此时我们随便找一个数与 交换即可,方案数为
- 前 个元素恰有一个不错位排列,将 与其交换,剩余的 个元素仍为错位排列,方案数为
- 前 个元素有超过一个不错位排列,此时可以证明无法通过一次交换形成错位排列
圆排列
在 个元素中取 个元素,首尾相接形成长度为 的环,允许旋转,求不同的排列的方案数
第一类斯特林数
将 个不同的球放入 个圆排列中,其方案数为第一斯特林数
第二类斯特林数
将 个不同的球放入 个相同的盒子,不允许空盒,其方案数为第二类斯特林数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】