zoukankan      html  css  js  c++  java
  • 计数问题

    计数问题

    第一类斯特林数

    ​ 有\(n\)个不同的球,把它们方到\(m\)个盒子里,每个盒子里的球连成一个环,问有多少种不同的方案。

    \(f[n][m] = f[n - 1][m - 1] + f[n - 1][m] * (n - 1)\) : 第\(n\)个球单独成一个环 + 第\(n\)个球与别的球挤一个盒子,这个球可以插到\(n - 1\)个空里。

    第二类斯特林数

    ​ 有\(m\)个相同的盒子和\(n\)个不同的球,问有多少种不同的方案。

    \(f[m][n] = f[m - 1][n - 1] + f[m][n - 1] * m\) : 第\(n\)个球单独放一个盒子 + 第\(n\)个球与别的球挤一个盒子,这个球可以放到\(m\)个盒子里。

    ​ 如果这\(m\)个盒子不相同,那么再乘一个\(m!\)就好了。

    组合数

    \(C_{n}^{m}\)表示从\(n\)个数里面取\(m\)个数有多少种方案。 直接上式子:

    \[C_{n}^{m} = C_{n - 1}^{m} + C_{n - 1}^{m - 1} \\ C_{n}^{m} = C_{n}^{n - m} \\ \displaystyle \sum_{i = 0}^{n} C_{n}^{i} = 2^n \\ C_{n + r + 1}^{r} = C_{n + r}^{r} + C_{n + r - 1}^{r - 1}+...+C_{n}^{0} \\ C_{n}^{l} * C_{l}^{r} = C_{n}^{r}*C_{n - r}^{l - r} \\ C_{n}^{0} - C_{n}^{1} + C{n}^{2}-...=0 \\ C_{r}^{r} + C_{r + 1}^{r} + ... + C_{n}^{r} = C_{n + 1}^{r + 1} \\ (1 + x)^n = \displaystyle \sum_{k = 0}^{n}C_{n}^{k}*x^{n - k} = \displaystyle \sum_{k = 0}^{n}C_{n}^{k} * x^k \]

    环形染色

    ​ 有\(n\)个球连成的一个环,有\(m\)种颜色,相邻的两个球不能同色,问有多少种不同的方案。

    ​ ​\(f[n] = f[n - 2] * (m - 1) + f[n - 1] * (m - 2)\) : 第\(n - 1\)个格子与第一个格子颜色相同 + 第\(n - 1\)个格子与第一个格子颜色不同。

    ​ 第\(n - 1\)个格子与第一个格子颜色相同时,\(f[n - 1]\)不符合题意,只能从\(f[n - 2]\)转移过来。

    ​ 第\(n - 1\)个格子与第一个格子颜色不同时,第\(n\)个球为了不和第1个球和第\(n - 1\)个球同色,只有\(m - 2\)种颜色。

    不相邻染色

    ​ 给你一个长度为\(n\)的格子,里面可以放黑球或白球,两个黑球不能相邻,问有多少种情况。

    ​ 我们用二维数组\(f[i][1]\)表示第\(i\)个格子放白球的情况有多少种,\(f[i][0]\)表示第\(i\)个格子放黑球的情况有多少种。

    \(f[n][1] = f[n - 1][1] +f[n - 1][0]\) : 如果第\(n\)个格子放白球,那么第\(n - 1\)个格子放黑球或者白球都可以;

    \(f[n][0] = f[n - 1][1]\) : 如果第\(n\)个格子放黑球,那么第\(n - 1\)个格子必须放白球。

    \[\left[ \begin{matrix} f[i][0] \\ f[i][1] \\ \end{matrix} \right] = \left[ \begin{matrix} 0 & 1\\ 1 & 1\\ \end{matrix} \right] * \left[ \begin{matrix} f[i - 1][0]\\ f[i - 1][1]\\ \end{matrix} \right] \]

    卡特兰数

    \[C_{2n}^{n} - C_{2n}^{n - 1} = \frac{C_{2n}^{n}}{n+1} \]

    \(Catalan\)数有关的:

    ​ 1.\(n\)个左括号和\(n\)个右括号组成的合法括号序列的数量为\(Cat_n\)

    ​ 2.1,2,……,n经过一个栈,合法的出栈序列的数量为\(Cat_n\)

    ​ 3.\(n\)个节点构成的不同的二叉树的数量为\(Cat_n\)

    ​ 4.在平面直角坐标系上,每一步只能向上或向右走,从(0, 0)走到(n, n)并且除了两个端点外不接触直线\(y = x\)的路线数量为\(2*Cat_{n-1}\)

    前15个卡特兰数:1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440。

  • 相关阅读:
    $.getJSON异步请求和同步请求
    Jquery中click事件重复执行的问题
    明白JavaScript原型链和JavaScrip继承
    利用canvas对上传图片进行上传前压缩
    webpack打包多html开发案例
    移动端的picker参考vux
    Vue于React特性简单对比(一)
    移动端调试和fiddler移动端抓包使用
    开发过程中的关键思维方法
    js移动端滑块验证解锁组件
  • 原文地址:https://www.cnblogs.com/czhui666/p/13369370.html
Copyright © 2011-2022 走看看