一、什么是Catalan数(Catalan数是许多计数问题的最终形式)

Catalan序列是一个整数序列,其通项公式是:

递推公式 1:

C(n) = C(1)*C(n-1) + C(2)*C(n-2) + ... + C(n-1)C(1),n>=2

递推公式 2:

令 h(0)=1,h(1)=1,Catalan数满足递推式:

h(n)=h(n-1)*(4*n-2)/(n+1);

举例,我们从中取出的 Cn 就叫做第 n 个 Catalan数,前几个 Catalan数 如下:

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, …

二、Catalan数 在组合计算中的应用

0、n对括号正确匹配数目?

1、矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,有几种括号化的方案?

2、一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少种不同的出栈序列?

3、n个节点构成的二叉树,共有多少种情形?

4、求一个凸多边形区域划分成三角形区域的方法数?

5、在圆上选择2n个点,将这些点成对链接起来使得所得到的n条线段不相交,一共有多少种方法?

6、n*n的方格地图中,从一个角到另外一个角,不跨越对角线的路径数为h(n)。例如:4×4方格地图中的路径有:

7、n层的阶梯切割为n个矩形的切法数也是Cn。如下图所示:

8、有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少种方法使得只要有10元的人买票,售票处就有5元的钞票找零?

9、甲乙两人比赛乒乓球,最后结果为20∶20,问比赛过程中甲始终领先乙的计分情形的种数。

10、2n个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

三、AC 代码

import java.math.BigInteger;
import java.util.Scanner;public class Main{public static void main(String[] args) {BigInteger h[]=new BigInteger[205];h[0]=h[1]=BigInteger.ONE;for(int i=2;i<205;i++)h[i]=(h[i-1].multiply(BigInteger.valueOf(4).multiply(BigInteger.valueOf(i)).subtract(BigInteger.valueOf(2)))).divide(BigInteger.valueOf(i+1));//        for(int i=1;i<=15;i++) // 打印输出
//          System.out.println(h[i]);Scanner in=new Scanner(System.in);while (in.hasNext()) {int n=in.nextInt();if(n==-1) break;System.out.println(h[n]);}}
}

ACM教程 - 卡特兰数(Catalan)算法相关推荐

  1. 卡特兰数 Catalan number

    卡特兰数 Catalan number 卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 74290 ...

  2. 算法基础 - 数论 | 组合数学 卡特兰数(Catalan number)定义、证明及例题

    写在前面:卡特兰数这东西感觉挺常用的,并且公式很简单,那就花一下午总结一下,学点皮毛吧(反正遇到我还是不会 ) [PDF] 大三上组合数学课堂讲义 文章目录 卡特兰数定义 卡特兰数的性质 卡特兰数证明 ...

  3. 卡特兰数Catalan number的应用

    卡特兰数(Catalan number)的应用 使用场景 计算公式   卡特兰数是一个特殊的数列,基于这个数列,可以找出很多有趣的问题,对于我们学计算机的而言,与这个数列打交道是不可避免了,举一个很经 ...

  4. 卡特兰数——Catalan数

    卡特兰数是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为  通常使用的递归式:  h(n)=((4*n-2) ...

  5. 卡特兰数Catalan

    1.卡特兰数的性质 其实重要的就两个公式:1和3. 公式1是卡特兰数的通项公式. 公式2是卡特兰数的递归公式.注意递推公式是C n+1=- 通常是发现问题可以用卡特兰数的递推公式来解决,从而想到卡特兰 ...

  6. 卡特兰数 Catalan数

    From: http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html 维基百科资料: 卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题 ...

  7. java编程求卡特兰数_卡特兰数(Catalan Number)

    卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.该数在计算机专业中比较重要,有一些具体的应用实例.这篇文章主要分三部分: 卡特兰数递归式的含 ...

  8. 卡特兰数 Catalan

    做初赛题,回顾到以前学的一些知识,发现还有其他广泛的应用,所以在此记录并当作复习,若有不当之处,随时欢迎读者斧正. Catalan 卡特兰数又称卡塔兰数,卡特兰数是组合数学中一个常出现在各种计数问题中 ...

  9. 出栈顺序 与 卡特兰数(Catalan)的关系

    一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3  ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2 ...

最新文章

  1. GitHub标星1.5w+,从此我只用这款全能高速下载工具
  2. 系统变量与环境变量的关系
  3. 谷歌等揭露「AI任务疑难」:存在局限的ImageNet等基准,就像无法代表「整个世界」的博物馆...
  4. pythonexcel汇总_用python汇总excel表格数据-怎样用python遍历表格中的内容
  5. 互联网协议 — DNS 域名协议
  6. python画仿真图-仿真入门:几行 Python 代码实现复杂社会动力学
  7. 在HTML中取得请求中的参数
  8. 单源点最短路径(Bellman-Ford)原理及js实现
  9. Linq Expression
  10. LTE下行DC子载波为0的原因解释
  11. 进销存设计之——进销存和财务软件的对接
  12. 【AI视野·今日NLP 自然语言处理论文速览 第三十三期】Thu, 21 Apr 2022
  13. Jabber服务器部署
  14. Python数据分析:数据可视化案例
  15. oracle cpu 消耗,解决Oracle CPU高度消耗(100%)的数据库问题
  16. RHEL7平台下电信拨号上网配置
  17. 根据条件对Excel表中数据进行计数
  18. Java题 细胞分裂
  19. 克拉夫斯曼高端定制 刘霞---【YBC中国国际青年创业计划】
  20. 用纯CSS3的animation制作雪花飘落、星星闪烁、按钮缩放、图片倾斜

热门文章

  1. android(4) 使用ViewPaper 以及这几年来的一些感悟
  2. 数学建模:火箭发生升空模型——基于matlab语言
  3. 再谈6大国产CPU处理器
  4. MoviePy - 中文文档4-MoviePy实战案例-重新构建15世纪舞蹈视频
  5. 王阳明: <一> 破山中之贼易,破心中之贼难
  6. js实现获取前12个月份的数组
  7. Vue定制iview的表格头格式,通用版
  8. 失业的程序员(七):梦想和胸襟
  9. 【Get深一度】Microsoft Office 2013 Word中图片插入后变模糊解决办法
  10. 算法分析与设计第五章作业