组合数学

阶乘

n! = n (n - 1) (n - 2) …. 1

定义: 0! = 1

排列

数学知识 - 图1

从n个不同元素中,任取m(m≤n)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号p(n,m)表示.
p(n,m)=n(n-1)(n-2)……(n-m+1)=数学知识 - 图2(规定0!=1).

组合

数学知识 - 图3

数学知识 - 图4

从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数.用符号c(n,m)表示.
c(n,m)=p(n,m)/m!=n!/((n-m)!*m!);c(n,m)=c(n,n-m);

组合数公式

二项式定理:
数学知识 - 图5

二项式系数符合: 杨辉三角

数学知识 - 图6

数学知识 - 图7

卡特兰数

定义式

  • image.png

    组合数公式 (用生成函数推导定义式)

  • image.png

  • image.png
  • image.png

    卡特兰数列

  • image.png

  • image.png

    应用方向

    括号匹配问题

  • image.png 个左括号, image.png 个右括号,对于每一个位置,左括号数大于等于右括号数的方案总数。

  • 等价于 image.png 个 image.png , image.png 个 image.png ,每个位置前缀和大于等于 image.png 的方案总数。
  • 两种理解方向:
    • image.png。枚举第一次前缀和为 image.png 的位置,假如第 image.png 个点为第一次前缀和为 image.png 的点,则固定第一个数为 image.png ,第 image.png 个数为 image.png ,则对答案贡献为 image.png 。
    • image.png 。总方案数为 image.png ,现需求不符合条件的方案数,将问题转化为网格上的折线问题。第 image.png 次在 image.png 处,第 image.png 次在 image.png 或 image.png 处,终点为 image.png 。不符合条件则说明折线上出现了 image.png 这个点, image.png 为第一次到达 image.png 的点,我们将 image.png 点之后的折线沿 image.png 对称过来,则终点为 image.png ,则一共有 image.png 个 image.png , image.png 个 image.png ,即不合法的方案总数为 image.png ,因此 image.png 。

image.png

出栈次序问题

  • 一个无穷大的栈,进栈序列为 image.png ,求有多少个不同的出栈序列。

    多边划分为三角形问题

  • 将一个凸多边形区域分成三角形区域的方案数。

  • 在圆上选择 image.png 个点,将这些点对连接起来使得所得到的 image.png 条线段不想交的方案数。

    二叉树计数问题

  • 给定 image.png 个节点,能构成多少种形状不同的二叉树。

  • 先取一个点作为顶点,然后左边依次可以取 image.png 个点,右边则可以取 image.png 个点,相乘再累加即可得到答案。