卡特兰数(Catalan)与斯特林数(Stirling)

Part One 卡特兰数(Catalan)

一、组合含义

1.从 (0, 0) 走到 (𝑛, 𝑛),且不越过 𝑦 = 𝑥 的方案数

2.凸多边形三角剖分问题

3.二叉树计数

4.长度为 2𝑛 的匹配括号序列的个数

 ……

 

二、Catalan数的求值

1.递归式

通常用于对Catalan数的辨识或用于较小数据求解
   1,1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796

1 c[0]=1,c[1]=1;
2 for(int i=2;i<=n;i++)              
3     for(int j=0;j<i;j++) 
4         c[i]+=c[j]*c[i-j-1];   

 

2.方格问题

组合数递推式

1 for(int i=1;i<=2*n;i++){
2     c[i][0]=c[i][i]=1;
3     for(int j=1;j<i;j++)
4         c[i][j]=c[i-1][j]+c[i-1][j-1];
5     }
6 printf("%lld",c[2*n][n]-c[2*n][n-1]);    

扩展

大数据取模需使用逆元

1 //上一种将最后一句改为
2 printf("%lld",c[2*n][n]/(n+1));

 

3.递推式


大数据谨慎使用

递推

1 c[0]=c[1]=1;
2 for(int i=2;i<=n;i++)
3     c[i]+=c[i-1]*(4*i-2)/(i+1);

 递归

1 int c(int n){
2     if(n==0||n==1) return 1;
3     return c(n-1)*(4*n-2)/(n+1);
4 }

4.括号匹配问题

5.生成函数

 

三、Catalan数的应用与习题

1.格路径问题

类似地,我们可以将Catalan数的定义扩展到n*m的网格中

2.赌徒问题

假设有一个赌徒初始时有1元,每次赌博以 1 − 𝑝 的概率获得一元,以 𝑝 的概率赔一元,那么赌徒输光钱的概率是多少?

3.高维几何体

𝑛 维超立方体的上共有多少个 𝑚 维超立方体呢?

解释:n维中可任取m维,剩余(n-m)维存在取和不取两种情况

4.洛谷习题(之后会补上代码)

P1044 栈(纯裸题)

P3200 [HNOI2009]有趣的数列

P1375 小猫

P2532 [AHOI2012]树屋阶梯

P1722 矩阵 II

P1976 鸡蛋饼

P3978 [TJOI2015]概率论

 

Part Two 斯特林数(Stirling)

一、代数含义

两个序列互相表示的问题

 

二、第二类斯特林数

1.其中转移系数为第二类斯特林数

2.求值

(1)递推式

(2)组合式

3.应用

4.性质

  ① 
  ② 
  ③ 
  ④ 
  ⑤ 
  ⑥ 
 

三、第一类斯特林数

1.其中转移系数为第一类斯特林数

2.求值

递推式

3.性质

  ① 
  ② 
  ③ 
  ④ 
  ⑤ 

 

posted @ 2019-07-14 13:58  Robert_JYH  阅读(781)  评论(0编辑  收藏  举报