• 【interview】卡特兰数


    涉及卡特兰数的题目列举,也是组合数学中一些例子:

    详解链接 https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0

    1. n个节点的二叉树有多少种形态?

      Cn表示有2n+1个节点组成不同构满二叉树(full binary tree)的方案数。

      下图中,n等于3,圆形表示内部节点,月牙形表示外部节点。本质同上。

            

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

    • Cn表示所有包含n组括号的合法运算式的个数:((())) ()(()) ()()() (())() (()()) 

    3. 一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列? 
    4. 有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈) 
    5. 将一个凸多边形区域分成三角形区域的方法数? 

    • Cn表示通过连结顶点而将n + 2边的凸多边形分成三角形的方法个数。下图中为n = 4的情况:
           Catalan-Hexagons-example.svg


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

    • Cn表示所有在n × n格点中不越过对角线的单调路径的个数。一个单调路径从格点左下角出发,在格点右上角结束,每一步均为向上或向右。计算这种路径的个数等价于计算Dyck word的个数:X代表“向右”,Y代表“向上”。下图为n = 4的情况:
    Catalan number 4x4 grid example.svg

    8. Cn表示长度2n的dyck word的个数。Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck word: XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY

      证明:

      令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数。显然含n个1、n个0的2n位二进制数共有{2n choose n}个,下面考虑不满足要求的数目。

      考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中必有n-m个1和n-m-1个0。将2m+2及其以后的部分0变成1、1变成0,则对应一个n+1个0和n-1个1的二进制数。反之亦然(相似的思路证明两者一一对应)。

    从而C_n = {2n choose n} - {2n choose n + 1} = frac{1}{n+1}{2n choose n}。证毕。

    9.

    • Cn表示用n个长方形填充一个高度为n的阶梯状图形的方法个数。下图为n = 4的情况:
    Catalan stairsteps 4.svg

    什么是卡特兰数?

    f(n)=f(n-1)f(0)+f(n-2)f(1)+……….+f(1)f(n-2)+f(0)f(n-1) 
    该数列称为卡特兰数(Catalan数),该递推关系的解为: 

    参考博文:

    https://blog.csdn.net/adminabcd/article/details/46672759

  • 相关阅读:
    C++用于修饰的keyword
    UVa 884
    yii 使用 mongodb 小工具 YiiMongoDbSuite
    三种网络协议握手
    学习设计模式的前世今生
    B二分法
    链接链接新手变化需要注意哪些问题
    插值与拟合 课件链接
    UVa 740
    疯狂暑期学习计划~~~
  • 原文地址:https://www.cnblogs.com/sherry-yang/p/10198582.html
Copyright © 2020-2023  润新知