zoukankan      html  css  js  c++  java
  • Catalan数

    学了\(Catalan\)数,赶紧复习怕自己忘记

    先丢个问题吧

    问题:给\(n\)\(0\)\(n\)\(1\),它们按照某种顺序排成长度为\(2n\)的数列,对于每个前缀,\(0\)的数量都不少于\(1\)的数量的数列个数。

    :令这些数排成一个长度为\(2n\)的数列,且不满足每个前缀中\(0\)的数列不少于\(1\)的数量,那么必定存在一个最小的位置\(2i+1∈[1,2n]\),使得这个前缀中有\(i\)\(0\)\(i+1\)\(1\),而对后面的数取反后,有\(n-i-1\)\(0\)\(n-i\)\(1\),于是我们得到了一个有\(n-1\)\(0\)\(n+1\)\(1\)排成的数列。

    同理,如果把有\(n-1\)\(0\)\(n+1\)\(1\)排成的数列继续进行上述操作,就得到了有\(n\)\(0\)\(n\)\(1\)排成的数列。

    这便构成了一个双射:

    1. \(n\)\(0\)\(n\)\(1\)排成的存在一个前缀中\(1\)\(0\)多的数列。

    2. \(n-1\)\(0\)\(n+1\)\(1\)排成的数列。

    然后式子就出来了

    \[Cat_n=C_{2n}^n-C_{2n}^{n-1}=\frac{(2n)!}{n!\times n!}-\frac{(2n)!}{(n-1)!\times(n+1)!}=\frac{1}{n+1}\times C_{2n}^n \]

    这就是卡特兰\((Catalan)\)数了

  • 相关阅读:
    mui中slider的上拉刷新下拉加载
    Ubuntu桌面版忘记密码
    RabbitMQ环境搭建
    .net core读取appsettings.json的配置
    .net core实现efcore增删改查
    .net core使用EFCore
    SQL nullif函数
    .net core项目IIS发布步骤
    .net core使用Session的方法
    js向数组指定位置插入一个对象
  • 原文地址:https://www.cnblogs.com/sdlang/p/13068026.html
Copyright © 2011-2022 走看看