卡特兰数非常经典,很多现实的问题都是卡特兰数,如合法的入栈出栈序列有多少种就是卡特兰数,为什么呢?我们可以把0看成入栈操作,1看成出栈操作,即0的累计个数不小于1的排列有多少种。还有很多其他的问题都是卡特兰数,如二叉树的个数,有序树的个数,多边形分成三角形的个数等。

卡特兰数的通项是c(2n, n)/(n+1)。

注意组合数学中的运算:A(m, n) = m! / (m-n)!,    C(m, n) = A(m, n) / n! = m! / ((m-n)!*n!),因此卡特兰数的通项:

C(2n, n)/(n+1) = (2n!) / ((2n - n)! * n!)  / (n + 1) = (2n!) / (n! * n!) / (n + 1)

卡特兰数的问题应用:

  1. 圆周上有标号为1,2,3,4,……,2n的共计2n个点,这2n个点配对可连成n条弦,且这些弦两两不相交的方式数为卡特兰数Cn
  2. 游乐园门票1元一张,每人限购一张。现在有10个小朋友排队购票,其中5个小朋友每人只有1元的钞票一张,另5个小朋友每人只有2元的钞票一张,售票员没有准备零钱。问:有多少种排队方法,使售票员总能找的开零钱?

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

    即甲在得到1分到19分的过程中始终领先乙,其种数是卡特兰数

  4. 饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式?

    答:得数是第n个卡特兰数Cn

一个汽车队在狭窄的路面上行驶,不得超车,但可以进入一个死胡同去加油,然后再插队行驶,共有n辆汽车,问共有多少种不同的方式使得车队开出城去?

  1. 括号化问题。一个合法的表达式由()包围,()可以嵌套和连接,如(())()也是合法 表达式;现在有 6 对(),它们可以组成的合法表达式的个数为

  2. 矩阵连乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)

  3. 出栈次序问题。一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?

  4. 类似:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)

  5. 将多边行划分为三角形问题。将一个凸N+2多边形区域分成三角形区域的方法数?类似:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果她从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

  6. 给顶节点组成二叉树的问题。给定N个节点,能构成多少种不同的二叉树,(能构成h(N)个)Catalan数的解法Catalan数的组合公式为 Cn=C(2n,n) / (n+1);

  7. 此数的递归公式为 h(n ) = h(n-1)*(4*n-2) / (n+1)

    卡特兰数真是一个神奇的数字,很多组合问题的数量都和它有关系,例如:

    Cn= n对括号正确匹配组成的字符串数,例如 3对括号能够组成:

    ((())) ()(()) ()()() (())() (()())

    Cn= n+1个数相乘,所有的括号方案数。例如, 4个数相乘的括号方案为:

    ((ab)c)d (a(bc))d (ab)(cd) a((bc)d) a(b(cd))

    Cn= 拥有 n+1 个叶子节点的二叉树的数量。例如 4个叶子节点的所有二叉树形态:

    • Cn=n*n的方格地图中,从一个角到另外一个角,不跨越对角线的路径数,例如, 4×4方格地图中的路径有:

    • Cn= n+2条边的多边形,能被分割成三角形的方案数,例如 6边型的分割方案有:

    • Cn= 圆桌周围有 2n个人,他们两两握手,但没有交叉的方案数。

    下面是一些大公司的笔试题

    先来一道阿里巴巴的笔试题目:说16个人按顺序去买烧饼,其中8个人每人身上只有一张5块钱,另外8个人每人身上只有一张10块钱。烧饼5块一个,开始时烧饼店老板身上没有钱。16个顾客互相不通气,每人只买一个。问这16个人共有多少种排列方法能避免找不开钱的情况出现。

    C8=1430,所以总数=1430*8!*8!

    2012腾讯实习招聘笔试题

    在图书馆一共6个人在排队,3个还《面试宝典》一书,3个在借《面试宝典》一书,图书馆此时没有了面试宝典了,求他们排队的总数?

    C3=5;所以总数为5*3!*3!=180.

Catalan number (卡兰特数)相关推荐

  1. 堆栈出栈顺序个数详解——卡兰特数

      参考了多篇博客之后,终于弄懂了,写下了方便以后复习!首先简单介绍一下堆栈的运行方式,先入后出,First In Last Out(FILO),即若我们将1-4顺序放入堆栈中,则出栈顺序为4 3 2 ...

  2. 【卡塔兰数】LeetCode 96. Unique Binary Search Trees

    LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...

  3. C语言实现卡塔兰数catalan(附完整源码)

    实现卡塔兰数catalan 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) #include <stdio ...

  4. Catalan number

    **Catalan number,卡特兰数又称卡塔兰数,**是组合数学中一个常出现在各种计数问题中出现的数列. 卡特兰数的前几个数 前20项为(OEIS中的数列A000108):1, 1, 2, 5, ...

  5. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)

    -卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名.历史上,清朝数学家明安图(1692年-1763年)在其<割圜密率捷法> ...

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

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

  7. 卡特兰数Catalan Number

    Catalan Number满足下列递推公式: N个元素元素进栈,多少种出栈方式 考虑A.B.C.D依次进栈,那么所有的出栈顺序是下列4种情况的并集: 1)A第一个出栈.肯定是A进栈后马上出栈,剩下B ...

  8. 卡特兰数Catalan number的应用

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

  9. 卡特兰数 Catalan number

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

最新文章

  1. 神经网络原来是这样和数学挂钩的
  2. 字符集GBK和UTF8的区别说明
  3. 项目: flappy bird
  4. AAS的完整形式是什么?
  5. python启动http服务_Python命令开启http.server服务器
  6. unity3d 虚拟博物馆_基于Unity3D的虚拟博物馆信息可视化系统①
  7. c语言随机产生10个30 100,c语言编写随机产生10个100~200之间整数,幷按从大到小排序...
  8. PAT甲级 1003 Dijkstra的口诀干货
  9. 使用Redis构建简单的社交网站
  10. Hive from_unixtime函数入门
  11. Java ThreadLocal study 2
  12. LuaProfiler:Lua内存优化工具教程
  13. 关于男生追女生的数学模型【转王博】
  14. 提升手机麦克风音量_【奇酷小技巧】教你无需ROOT增大话筒、听筒和外放声音!...
  15. 博微三维技术篇【七】——生态数据兼容
  16. 【天光学术】新闻学论文:校园网络流行语传播社会热点问题的途径(节选)
  17. 《王者荣耀游戏服务器架构演进(完整版)》读后感
  18. 小米强制淘汰老破小,苹果华为带了好头
  19. 将数字转化为字符串的两种方法
  20. 人工智能+名片,我们看到了营销圈中的“阿尔法

热门文章

  1. 深度解析京东个性化推荐系统
  2. 一、dubbo入门与实战
  3. 推荐几本经典计算机书籍
  4. 利用eyoucms快速构建网站
  5. ai人工智能将替代人类_AI再次击败人类
  6. 平安科技面试(成都应届)
  7. Promise、Promise.all 和Promise.race用法
  8. 【PAT甲级 - C++题解】1147 Heaps
  9. 强制应用横竖屏的简单设置
  10. PmxEditor制作mmd表情