排列组合
排列与组合
排列组合其实是分开的两个词,排列:A,组合:C。
排列组合即 AC。

先来看最基本的排列:\(1\sim n\) 的全排列,这个有多少种呢?\(n!\) 种。
然后看到最基本的组合:从 \(n\) 个数中选择一个数,方案数当然是 \(n\) 种了。
\(A_{n}^{m}\) 表示在 \(n\) 个不同元素中选择 \(m\) 个进行排列的方案数,计算方法:
可以这么理解:\(n!\) 就是所有数全部拎出来排,但是我们只需要 \(m\) 个,剩下的 \(n-m\) 个数的排列是多余的。
\(C_{n}^{k}\) 表示在 \(n\) 个元素中选出 \(m\) 个的方案数,计算方法:
可以这么理解:\(A_{n}^{m}\) 已经选好了这 \(m\) 个数,但是我们不需要这 \(m\) 个数的 \(m!\) 种排列,所欲去掉。
加法原理
不同的类型的方案数应该相加。
如:一条路,往前走有 \(A\) 种走法,往后走有 \(B\) 种走法,那么一共有 \(A+B\) 种走法。
乘法原理
不同步骤的方案数应该相乘。
如:一条路,走第一步有 \(A\) 种选择,走完第一步之后又有 \(B\) 种选择,则一共有 \(A\times B\) 种选择。
容斥原理
别样的排列与组合
圆排列
若从 \(n\) 个数中选择 \(m\) 个数排成一个圆,排列方案?
首先我们不考虑圆,则方案数为 \(A_{n}^{m}\)。
在圆排列中,排列 \([1,2,3]\),\([2,3,1]\) 和 \([3,1,2]\) 都是同一个排列。
一个长度为 \(m\) 的排列以任意一个数作为首位在线性排列种是不同的,但在圆排列中却是相同的。
所以圆排列数:\(\frac{A_{n}^{m}}{m}\)
重复元素的排列
求一个序列 \([1,2,2,3,4,4,4,5]\) 的不同全排列数量。
考虑普通的全排列,即为 \(8!=40320\) 种。
但是序列中有重复的元素,如 2,前后两个 2 交换位置时应该是同一种方案,所以答案算多了。
然后是 4,在一个排列中,4 有 \(3!=6\) 种方案交换位置。
所以,长度为 \(n\) 的序列 \(a\) 含有重复元素的不同全排列数量为:
不相邻组合
注意!是组合!
一个序列的选出 \(m\) 个数,但是要求:若 \(a_x\) 被选出,则 \(a_{x-1}\) 和 \(a_{x+1}\) 不能被选出。
这样考虑:
选出了 \(m\) 个数,所以还有 \(n-m\) 个数没有被选出。若要选出的数不相邻,则要求选出的数在未选出的 \(n-m\) 个数之间插空。
\(n-m\) 个数有 \(n-m+1\) 个空!
方案数即为 \(C_{n-m+1}^{m}\)
球放盒子
保证你读完之后认不到“球”和“盒”这两个字。
\(n\) 球,\(m\) 盒。
球相同,盒子不同,盒子不能为空
问题等价于“将若干元素分成 \(m\),每组必须有值。”
考虑使用插板法(插 \(x\) 个板子分成 \(x+1\) 组)
问题又等价于:\(n\) 个球中间共有 \(n-1\) 个空隙,在这 \(n-1\) 个空隙插入 \(m-1\) 个板子(选择 \(m-1\) 个空隙插板子),方案数 \(C_{n-1}^{m-1}\)
球相同,盒子不同,盒子可以为空
由于球是相同的,可以给每个盒子先放一个球(一共放 \(n+m\) 个球),然后就转化成了上一个问题。
方案数 \(C_{n+m-1}^{m-1}\)
球相同,盒子相同,盒子不能为空
定义状态:\(dp_{n,m}\) 表示 \(n\) 球 \(m\) 盒的方案数。
浙公网安备 33010602011771号