计数问题
计数问题
第一类斯特林数
有\(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\)个数有多少种方案。 直接上式子:
环形染色
有\(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\)个格子必须放白球。
卡特兰数
与\(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。