【模板】卡特兰数

ACM模板


Catalan数证明

1.卡特兰数递推式:
a n = { 1 , n = 0 ∑ i = 0 n − 1 a i × a n − 1 − i , n > 0 a_n=\begin{cases} 1,n=0\\\sum_{i=0}^{n-1}a_i×a_{n-1-i},n>0\end{cases} an={ 1,n=0i=0n1ai×an1i,n>0
2.卡特兰数组合数:
a n = C 2 n n − C 2 n n − 1 a_n=C_{2n}^n-C_{2n}^{n-1} an=C2nnC2nn1
证明递推式

先举个例子,假如你身上没有钱,但是你想花钱,你每次可以花一元钱,只要你有钱你可以连续花钱,你父母准备给你n元钱但是每次只给你一元钱,只要还没给你n元钱就可以一直给,问你有多少种花钱方案?

如下图,我们令父母给钱代表向右移动一个单位,花钱代表向上一个单位初始在原点(你没有花钱,你父母也没有给你钱)最终父母给我们n元钱,我们花掉n元钱。根据实际情况我们可以知道,我们花的钱一定不超过父母给我们的钱。抽象一下现在要求从(0,0)到(n,n)的一条路径并且路径上的所有点的纵坐标小于等于横坐标

在这里插入图片描述

求从(0,0)到(n,n)的一条路径的方案数为 C 2 n n C_{2n}^n C2nn

如果某条路径不合法,如上图黑色路径,路径上存在点的纵坐标大于横坐标,我们找到第一个不符合该条件的点如图橘黄色的点,该点一定落在 y = x + 1 y=x+1 y=x+1这条直线上,我们将此不合法路径橘色点的后部分关于 y = x + 1 y=x+1 y=x+1做对称,如图黄色部分该终点一定落在 ( n − 1 , n + 1 ) (n-1,n+1) (n1,n+1)。因此从求从(0,0)到(n,n)的不合法路径的方案数可以转化为从(0,0)到(n-1,n+1)的一条路径的方案数为 C 2 n n − 1 C_{2n}^{n-1} C2nn1

从(0,0)到(n,n)的一条路径并且路径上的所有点的纵坐标小于等于横坐标 C 2 n n − C 2 n n − 1 C_{2n}^{n}-C_{2n}^{n-1} C2nnC2nn1

卡特兰数应用

  1. 进栈
  2. 括号匹配
  3. 画二叉树
  4. 凸多边形三角划分

猜你喜欢

转载自blog.csdn.net/Fighting_Peter/article/details/113010100