乘法原理是组合计数的基本计数原理。简而言之,“若有a种方法做某事,b种方法做另一事,则合共有a⋅b种方法做此两件事。”
例子
有一个集合A={a1,a2,a3},一个集合B={b1,b2},现从分别从集合A,B中取一个元素,形成一个新的集合C,问C有多少种可能性?
┌───► a1
│
a ──┼───► a2
│
└───► a3
┌───► b1
b ──┤
└───► b3
注意前提条件: 集合A∩B=∅
即两次选择中,没有选项重复出现
整个问题可以等同于选取一个有序对(a,b),其中a∈A,b∈B,a有3种取法,b有2种取法,则共有3×2=6
使用集合来描述这个种问题
C={(a,b)∣a∈A,b∈B}A∩B=∅}⇒∣C∣=∣A∣×∣B∣问题2
有n个不同球,编号为1,2,⋯,n,放到n个不同的盒子里,有多少种不同的放法?
设f(n)表示n个数据时的方案数.f(n)=n×f(n−1)
核心:
- 放的顺序不影响结果(需要证明).
- 所以可以先放第n个球.
- 这说明这是一个面对集合的问题,而不是面对一个序列的问题!
- 第n个球放完后,相当于减少了一个位置,问题就变成了f(n−1).这说明:无论第n个球放哪个位置,所形成的子问题的答案都是一样的,所以一定是把这些子问题加起来(加法原理),也就是N×f(n−1)
证明:放的顺序不影响结果, 本质是一种映射关系. 顺序放法put1 与放法put2,都可以得到答案集合里的任意一个元素.
也就是说put1,put2都可以得到所有的答案.
总结: 第一步有n种可能性(放法),第二步放编号为n-1的球,有n-1个可能性,… 最后答案就把这些可能性乘以起来
f(n)=n!=n×(n−1)×(n−2)×⋯1练习题目
TODO
参考