• 浅谈卡特兰数


    卡特兰数

    卡特兰数又称卡塔兰数,卡特兰数是组合数学中一个常出现在各种计数问题中的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名。

    中文名卡特兰数

    外文名Catalan number

    解释

    出现在各种计数问题中出现的数列

    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, ...

    递推式子

    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(n)=h(n-1)(4n-2)/(n+1)

    h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

    h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)

    应用

    例题一

    题目描述:

    已知一颗二叉树有n个结点,问:该二叉树能组成多少种不同的形态?

    分析:

    设该二叉树左子树i个结点,则右子树就有n-i-1个结点

    则可以得出:

    dp[n]=Σ(i=0;i<=n-1;i++){dp[i]*dp[n-i-1]}

    就是递推式子一

    例题二

    题目描述

    有n个A和n个B排成一排,从第一个位置开始到任意位置,B的个数不能超过A的个数,问:

    这样的排列有多少种

    分析:

    可以尝试用↗来表示A,用↘来表示B,那么我们可以画一个图标,

    最终是一个等腰直角三角形,你会惊讶地发现画完以后任何时候A都≥B

    发现其递推式子就是卡特兰数别问为什么,记住就行,下次就是模板套路了

    例题三

    问题描述

    ​ 一个序列A1×A2×A3×……×An,可以加括号改变该序列的运算顺序,问:有多少种不同的运算顺序?

    分析:

    类似例题一

    dp[n]表示长度为n时有多少种不同的运算顺序

    dp[n]=Σ(i=0;i<=n-1;i++){dp[i]*dp[n-i-1]}

    例题四

    欧拉多边形分割问题

    我们可以用n-3条互不相交的对角线将n边形分成n-2个互相没有重叠的三角形,输出有多少种不同的分法。

    如N=6时,如下所示

    img

     分析

    (1)我们从最简单情况开始:N=3,f(3)=1;

        img

      (2)当N=4,f(4)=2;

        img

      (3)N边时

        img

        我们从节点1开始考虑,要想分割成三角形区域,1不能和与它相邻的点连接,

    ​ 所以1可以连接3,4,...,N-1;

        假设1连接i,则分割成的两个区域分别为i凸多边形和N+2-i凸多边形

        一半是重复情况,所以最终的分割方法为:

           img

    类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

    例题五

    题目描述

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

    分析

    对于每一个数来说,必须进栈一次、出栈一次

    我们把进栈设为状态‘1’,出栈设为状态‘0’

    n个数的所有状态对应n个1和n个0组成的2n个数

    由于等待入栈的操作数按照1‥n的顺序排列、入栈的操作数b大于等于出栈的操作数a(a≤b)

    问题转化为例题二

    类似:一位大城市的律师在他住所以北n个街区和以东n个街区处工作,每天她走2n个街区去上班。如果他从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?

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

  • 相关阅读:
    无向连通图求割边+缩点+LCA
    poj 1417(并查集+简单dp)
    java系统时间的调用和格式转换
    Delphi程序的主题(Theme)设置
    分块读取Blob字段数据(Oracle)
    Delphi xe5 编译报environment.proj错误的解决
    DataSnap服务器从xe2升级到xe5报错的处理
    分块读取Blob字段数据(MSSQL)
    Delphi XE5 for Android (十一)
    Delphi XE5 for Android (十)
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/11686144.html
Copyright © 2020-2023  润新知