卡塔兰数简介

卡塔兰数(Catalan)

一、简介:

  卡塔兰数是一个特殊的数列,在ACM程序设计、组合数学中会经常见到。

二、性质

(1)卡塔兰数的前几项

1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ……

(2)公式

(a)通项公式:  1)    

2)    

(b)递归公式:    C(n) = ((4*n-2)/(n+1)) * C(n-1)

(c)递推公式: 1)    

2)

(3)渐进时间增长函数

三、应用

  (1)完成N个矩阵连续相乘的运算时,任意顺序组合的个数。

  eg:

  n = 1:(A);

  n = 2:(AB);

      n = 3:(A(BC)),((AB),C);

  n = 4:((A(BC))D),((AB)(CD)),(((AB)C)D),(A((BC)D)),(A((BC)D));

      ……

  (2)当二叉树有n+1个叶子结点时,其所有二叉树种类为Cn。

  (3)将有n+2条边的凸多边形通过连接其对角线可分成n个三角形的连线方案数为Cn。

  (4)将1、2、3,……n这几个自然数依次入栈,其出栈序列有Cn中情况。

更多关于卡塔兰数的内容请参考维基百科。

时间: 2024-07-30 10:14:28

卡塔兰数简介的相关文章

catalan卡塔兰数

令h(0)=1,h(1)=1,卡塔兰数数满足递归式:h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2),这是n阶递推关系;还可以化简为1阶递推关系: 如h(n)=(4n-2)/(n+1)*h(n-1)(n>1) h(0)=1该递推关系的解为:h(n)=C(2n,n)/(n+1)=P(2n,n)/(n+1)!=(2n)!/(n!*(n+1)!) (n=1,2,3,...) 1 #include <iostream>

卡塔兰数(Catalan)

卡塔兰数(Catalan) 原理: 令h(0)=1,h(1)=1. 卡塔兰数满足递推式:h(n)=h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0)(n>=2) 比如: h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2 h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5 另类递推式:h(n)=h(n-1)*(4*n-2)/(n+1); 递推关系的解为: h(n)=c(2n,n)/(n+1) (n=

HDOJ 1023 Train Problem II (卡塔兰数)

Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know if all the trains come in strict-increasing order, how many orders that all the trains can get out of the railway. Input The input contains se

递归输出所有出栈次序及卡塔兰数应用

用ArrayList模拟栈的操作,采用递归算法.代码如下: 1 import java.util.ArrayList; 2 import java.util.Scanner; 3 4 public class stackAll { 5 static int num=0; 6 public static void main(String[] args) { 7 Scanner scanner=new Scanner(System.in); 8 int n=scanner.nextInt();//输

排列组合 - 卡塔兰数的应用

卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.输入一个整数n,计算h(n). h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2,h(0) = h(1) = 1) 该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...) int Catalan(int n) { if(n <= 1) return 1; int *h = new int [n+1]; h[0] = h[1] = 1; for(

对卡塔兰数的理解

卡塔兰数定义 f(n) = f(0)f(n-1) + f(1)f(n-2) + ... + f(n-1)f(0)       = f(k-1)f(n-k) k=1...n 以k为轴划分子问题,左边子问题的解的个数和右边子问题的解的个数是原问题以k为轴的解法的2个独立步骤,适用乘法原理 分别以1,2,...n为轴,是原问题的n种解法,适用加法原理. 与卡塔兰数有关问题通常满足如下描述:有一个大问题A,规模为n,要解决这个问题,可以用分治的思想,首先固定其中某一个元素,将剩下的n-1个元素拆分成两个

也谈卡塔兰数

引例一:2n个人排队买票,其中n个人持50元,n个人持100元.每张票50元,且一人只买一张票.初始时售票处没有零钱找零.请问这2n个人一共有多少种排队顺序,不至于使售票处找不开钱? 引例二:括号匹配,n个左括号,n个右括号,求合法组合数目. 引例三:1表示进栈,0表示出栈.n个0,n个1的合法排列. 引例四:对于一个无限大的栈,一共n个元素,请问有几种合法的入栈出栈形式? 引例五:P = a1 * a2 * a3 * ... * an,其中ai是矩阵.根据乘法结合律,不改变矩阵的相互顺序,只用

高性能计算卡Tesla K20简介

1.简介 Tesla K20是由NVIDIA公司研发,用于服务器高性能计算的一款GPU,是Tesla品牌下的一个产品. NVIDIA研发的高性能计算产品Tesla K20,基于开普勒(Kepler)架构,核心芯片GK110.拥有71亿个晶体管,而且还有更高端的Tesla K20X兄弟产品.K40.K80等升级产品. 采纳Tesla K20系列的机构还有:美国克莱姆森大学.印第安纳大学.南加州大学(USC).托马斯·杰斐逊国家加速器实验室.国家超级计算应用中心(NCSA).国家海洋和大气管理局(N

hdu1133 Buy the Ticket (卡兰特数应用+java大数)

题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1133 [题意] 电影票50块一张 有m个人手里正好有50块,n个人手里正好有100块,售票厅開始没有钱.问,有多少种排队的方式,能够让每一个人都买上票. (假设售票厅没有50块零钱,则持有100块的人买不了票) [分析] 显然.当m<n的时候,有0种排列方式. 当m>=n的时候: 用0.代表手里仅仅有50块的人,1,代表手里仅仅有100块的. 则0110100 这样的情况不能满足条件(到第三个人