卡特兰数与斯特林数

卡特兰数与斯特林数

卡特兰数

前言:这里我们定义 Cn 为卡特兰数的第 n 项。

递归定义式:Cn=i=0n1Ci×Cni1
理解:对于 n 个点构成的二叉树,其形态共有 Cn 个,你设根节点的左儿子子树大小为 i,即形态有 Ci 个,右子树大小为 ni1,即形态有 Cni1 个,相乘即可。

组合定义式:Cn=C2nnC2nn1=1n+1×C2nn
这个后面证

卡特兰数的增长大约为 O(4n)

例题:给定 n0n1 组成的一个 2n 个元素的排列,要求该排列的任意前缀,0 的数量不能少于 1 的数量,求满足排列的个数

结论:排列个数为 Cn
证明:我们可以建一个 n×n 的网格,1 表示向上走,0 表示向右走,最终我们从 (1,1) 走到 (n,n),对于任意前缀 0 的数量不能少于 1 的数量这个限制,我们可以画出对角线,对角线以下的是合法的,而对角线上面的是不合法的,接着我们在对角线上再隔一格画一条线 y,对于不合法的,我们沿 y 对称回来,这样他只会超过对角线最多一格,而他最后只会走到 (n,n1),即 Cn=C2nnC2nn1=1n+1×C2nn

错位排列

例题:有 n 个盒子编号为 1n,有 n 个球编号为 1n,求编号为 i 的球不放入编号为 i 的盒子的方案数

dpi 表示 n 个元素的错位排列的方案数,则 dpi=(n1)×(dpn1+dpn2),dp1=0,dp2=1

证明:当我们考虑到第 n 个时

  1. n1 个元素全部错位排列,此时我们随便找一个数与 n 交换即可,方案数为 (n1)×dpn1
  2. n1 个元素恰有一个不错位排列,将 n 与其交换,剩余的 n2 个元素仍为错位排列,方案数为 (n1)×dpn2
  3. n1 个元素有超过一个不错位排列,此时可以证明无法通过一次交换形成错位排列

圆排列

n 个元素中取 k 个元素,首尾相接形成长度为 k 的环,允许旋转,求不同的排列的方案数
ans=Pnkk

第一类斯特林数

n 个不同的球放入 k 个圆排列中,其方案数为第一斯特林数 s(n,k)
s(0,0)=1,s(k,0)=0,s(n,k)=s(n1,k1)+(n1)×s(n1,k),1kn

第二类斯特林数

n 个不同的球放入 k 个相同的盒子,不允许空盒,其方案数为第二类斯特林数 s(n,k)
s(0,0)=1,s(k,0)=1,s(n,k)=k×s(n1,k)+s(n1,k1),1kn

posted @   noipwen  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示