程序员的数学(五)—— 排列组合,解决计数问题的方法

一、加法法则

要数出分为两个数的集合时,可以使用加法法则。

思考题一

在一副扑克牌中,有10张红桃数字牌(A、2、3、4、5、6、7、8、9、10),3张红桃花牌(J、Q、K),那么红桃共有多少张?

答案:13张

上面使用的就是加法法则。

加法法则就是将无“重复”元素的两个集合A、B相加,得到A∪B的元素数。

A∪B的元素数 = A的元素数 + B的元素数

如果将集合A的元素数写作|A|,集合B的元素数写作|B|,那么加法法则就可以用以下等式来表示:

|A∪B| = |A| + |B|

注意:加法法则只在集合中没有重复元素的条件下成立,在有重复的情况下,必须减去重复才能得到正确的数量。

思考题二

在一副扑克牌中,有13个级别(A、2、3、4、5、6、7、8、9、10、J、Q 、K),在这里分别将A、J、Q、K设为整数1、11、12、13,在我们面前有一个装置,会根据扑克牌的等级控制灯亮灯灭。我们假设放入扑克牌的等级为n(1-13的整数),

● 若n是2的倍数,则灯亮

● 若n是3的倍数,则灯亮

● 若n既不是2的倍数,也不是3的倍数,则灯灭

如果往这个装置中依次放入这13张牌,那么亮灯的有多少张牌呢?

答案:8张

2的倍数有6个,3的倍数有4个,一共是10个,但是其中有两个分别是2和3的倍数,那么再减去重复的个数,就是8张,这是考虑了重复元素的加法法则。也称之为容斥原理

集合A、B的元素总数 = A的元素数 + B的元素数 - A和B共同的元素数

如果将集合A的元素数写作|A|,集合B的元素数写作|B|,那么容斥原理就可以用以下等式来表示:

|A∪B| = |A| + |B| - |A∩B|

二、乘法法则

思考题一:红桃的数量

        一副扑克中,有红桃、黑桃、方块、梅花四种花色,每个花色都有A到K这13个等级。那么,一副扑克共有多少张?

答案:4*13=52张(乘法法则)

        现有A、B两个集合,如果要将集合A和集合B中的所有元素组合起来,这里组合的结果就是两个集合的元素数相乘的结果。我们将集合A的元素数写作|A|,将集合B的元素数写作|B|,那么元素的组合数就是:|A|×|B|

       从集合A和集合B中取出一个元素作为一组,所有这种组合的集合即为A×B,表示为|A×B|=|A|×|B|

思考题二:3个骰子

       将3个写有1到6的骰子并列排放,形成一个3位数,总共能形成多少个数字?

分析:

        第1个骰子有1、2、3、4、5、6共6种情况

        第2个骰子也有6种情况,则两个骰子共有6×6=36种情况(乘法法则)

        第3个骰子同样有6种情况,则三个骰子总共有6×6×6=216种情况

答案:216个

思考题三:32个灯泡

        1个灯泡有亮和灭两种状态,若将32个这样的灯泡排成一排,共有多少种亮灭模式?

分析:

        第1个灯泡有亮、灭两种模式

        第2个灯泡有亮、灭两种模式,则两个灯泡共有2×2=4种亮灭模式

        第3个灯泡有亮、灭两种模式,则三个灯泡共有2×2×2=8种亮灭模式

        ......

        第32个灯泡有亮、灭两种模式,则32个灯泡共有2×2×...×2(32个2)=2^32种模式

答案:2^32种模式

通常n位2进制数可以表示的数的总和是2^n个

三、置换

思考题一:3张牌的置换

        如果将A、B、C这3张牌按照ABC、ACB、BAC等顺序进行排列,那么共有多少种排法?

分析:

        第1张牌,从3张牌中选出,有3种选法

        第2张牌,从剩下的2张牌中选出,有2种选法

        第3张牌,从最后一张牌中选出,只有一种选法

答案:3×2 ×1=6种

如题,将n个事物按顺序进行排列称为置换

阶乘:乘数呈阶梯状递减

3×2×1可表示为3!

5!=5×4×3×2×1=120

4!=4×3×2×1=24

3!=3×2×1=6

2!=2×1=2

1!=1×1=1

注意:

1!=1,0!=1

为什么0的阶乘等于1呢?

通过观察可发现:

(n+1)!=(n+1)×n×(n-1)×......×1=(n+1)×n!

n!=n×(n-1)×......×1

(n-1)!=(n-1)×......×1=n!÷n

当n=1时,(1-1)!=1!÷1,即0!=1

四、排列

思考题一:从5张牌中取3张牌进行排列

        如果你手中现在有A、B、C、D、E这5张牌,现在要从这5张牌中选3张进行排列,请问有多少张排法?

分析:

        选第1张牌,从5张牌中选,有5种选法

        选第2张牌,从剩下的4张牌中选,有4种选法

        选第3张牌,从剩下的3张牌中先,有3种选法

答案:5×4×3=60种

归纳排列:从n张牌中选取

第1张牌,从n张牌中选取,有n种选法

第2张牌,从n-1张牌中选取,有n-1种选法

第3张牌,从n-2张牌中选取,有n-2种选法

......

第k张牌,从n-(k-1)张牌中选取,有n-(k-1)种选法

因此,从n张牌中选取k张牌的排列总数就是:

n×(n-1)×(n-2)×......×(n-(k-1))

即(n-0)×(n-1)×(n-2)×......×(n-(k-1)),共有k项相乘

可以写作:=(n-0)×(n-1)×(n-2)×......×(n-(k-1))

如果n=5,k=3,则=5×4×3=60

需要注意的是,当n=5,k=0时,=1而不是0

用阶乘来表示

=

五、组合

思考题一

        假设现在有A、B、C、D、E五张牌,要从这5张牌中取出3张牌,并且不考虑它们的顺序,即以3张牌一组进行选择,则共有10种取法,这种取法被称为组合。

分析:

        首先和排列一样进行计数,不考虑重复共有60种排列

        然后除以重复计数的部分(重复度),3张牌置换的总数为6,即3张牌重复度为6

        60÷6=10种组合

        组合的总数=5张牌里取3张的排列总数÷3张的置换总数

用阶乘来表示


猜你喜欢

转载自blog.csdn.net/alexshi5/article/details/79955557