zoukankan      html  css  js  c++  java
  • 卡特兰数列(蒟蒻的学习笔记)

    卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190 ...


    它最基本的递推为 

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

    应用

    一.比如说要求由n个节点组成的二叉树个数,可以这样思考:

    所以很容易发现符合卡特兰数的递推式啦。

    二.给定n个数字1,2,3,4...,n,求它们出栈顺序的方案数

    这次就不画图了。。

    设出栈的最后一个元素为k,那么入栈k之前的k-1个元素出栈方案数为h(k-1),k入栈后,k之后的n-k个元素出栈方案为h(n-k),则k最后出栈的方案数为,h(k-1)*h(n-k),不同k之间的方案数显然没有联系,所以之间是加法关系,加起来就好了。明显可以看出是卡特兰数。

    三.给一个n条边的凸多变形,用几条不相交的顶点连线,把它分成若干三角形,求有几种划分方案

           图画的好丑,不要介意

       考虑把这个八边形划分成1,2两个部分,那么多边形1就是六边形,多边形2是4边形。所以这种划分方式的总方案为h(6-3)*h(4-3),不同的划分方案的值加起来,就是卡特兰数了。

  • 相关阅读:
    安装TeX字体
    【数学】对数的底为什么不能为负数
    算法设计的要求
    Windows HTTP Services
    为什么分母不能为0
    循环小数怎样变分数
    在win7环境下批量修改文件权限
    算法复杂度的极限证明
    深入理解 【有理数】、【无理数】、【虚数】
    kettle连接sqlserver
  • 原文地址:https://www.cnblogs.com/HLAUV/p/9750277.html
Copyright © 2011-2022 走看看