公式回顾
高中所学的排列组合,我们用程序来模拟一下。
如果是从 n 个元素中取出 n 个元素进行排列,那一共有 n! 种排法。
因为,有 n 个元素,放入 n 个盒子里,第1个盒子有 n 种取法,第2个盒子有 n - 1 种取法,第 n 个盒子有 1 种取法,根据分步算法,n (n - 1) (n - 2) … 1 = n! 。
那如果是 n 个元素,任取 m 个排列,那同理能得出如下公式。
$ P_n^m=\frac{n!}{(n-m)!} $
如果是组合,我们把 m 个元素的阶乘除掉即可。
$ C_n^m=\frac{n!}{(n-m)!m!} $
同时,排列组合还有如下两个重要公式:
$ P_{n+1}^m=P_n^m+mP_n^{m-1} $
$ C_{n+1}^m=C_n^m+C_n^{m-1} $
排列
1 | import itertools |
组合
1 | c = itertools.combinations(list, 2) |