师:同学们好,上节课我们学习了分类加法计数原理和分步乘法计数原理,也了解了它们之间的区别与联系。今天,我们将探讨这两个原理在实际生活中的应用。首先,对上节课内容做个简要回顾。
一、分类加法计数原理的推广:如果完成一件事有(n)类不同方案,在第一类方案中有(M_1)种不同方法,在第二类方案中有(M_2)种不同方法,……在第(n)类方案中有(m_n)种不同方法,那么完成这件事共有(N = M_1 + M_2 + \cdots + m_n)种不同方法。
二、分步乘法计数原理的推广:如果完成一件事需要(n)个步骤,做第一步有(M_1)种不同方法,做第二步有(M_2)种不同方法,……做第(n)步有(m_n)种不同方法,那么完成这件事共有(N = M_1×M_2×\cdots×m_n)种不同方法。
三、两个原理的区别与联系:它们都用于解决完成一件事的不同方法总数问题。区别在于,分类加法计数原理针对分类问题,每类方案中的每种方法都能独立完成这件事,且各类方法相互独立;而分步乘法计数原理针对分步问题,任何一步都不能独立完成这件事,只有每个步骤都完成才能完成这件事,且各步骤之间相互依存。
下面,我们运用这两个原理来解决生活中的计数问题。看例1,要从甲、乙、丙三幅不同的画中选出两幅,分别挂在左右两边墙上的指定位置,共有多少种不同挂法?
师:此题需要完成什么事?
生:从甲、乙、丙三幅不同的画中选出两幅,分别挂在左右两边墙上的指定位置。
师:那如何完成这件事呢?大家思考一下。
由于数字较小,有的同学可能想用列举法,有的同学可能想用分类加法计数原理,按左边墙上所挂画的类别分类,有三类;还有同学可能想用分步乘法计数原理,第一步选左边墙所挂的画,第二步确定右边墙所挂的画。下面看三种解法。
方法一:列举法。若左边选甲,右边可选乙或丙,得到挂法左甲右乙、左甲右丙;若左边选乙,右边可选丙或甲,得到挂法左乙右丙、左乙右甲;若左边选丙,右边可选甲或乙,得到挂法左丙右甲、左丙右乙,所以共有(6)种挂法。
方法二:从三幅画中选两幅挂在左右两边墙,有三类方法。第一类,甲画挂左边墙有(2)种方法;第二类,乙画挂左边墙有(2)种方法;第三类,丙画挂左边墙有(2)种方法。根据分类加法计数原理,不同挂法总数(N = 2 + 2 + 2 = 6)。
方法三:从三幅画中选两幅挂在左右两边墙,可分两个步骤。第一步,从三幅画中选一幅挂左边墙,有(3)种选法;第二步,从剩下两幅画中选一幅挂右边墙,有(2)种选法。根据分步乘法计数原理,不同挂法总数(N = 3×2 = 6)。
师:大家再想想,还有其他解法吗?
事实上,还可这样考虑,从三幅画中选两幅挂在左右两边墙,分两个步骤。第一步,从三幅画中选两幅,有(3)种选法;第二步,将选出的两幅画挂好,有(2)种挂法。根据分步乘法计数原理,不同挂法总数(N = 3×2 = 6)。
下面回顾例1的四种解法。解法1和解法4的第一步表明,当涉及对象数目不大时,列举法直观方便。再看解法2和解法3,从结果看(2 + 2 + 2 = 3×2),在加法运算中,加数相同时,乘法运算是加法运算的简化。从过程看,解法2中每类方法均有(2)种挂法,可简化为分步,即解法3是解法2的简化。由此可知,乘法运算是特定条件下加法运算的简化,分步乘法计数原理是特定条件下分类加法计数原理的简化,这里特定条件指在加法运算中加数相同,在分类加法计数原理中每一类的计数相同。再看解法3和解法4,均用分步乘法计数原理,但第一步和第二步含义不同。
下面看一个变式,要从甲、乙、丙、丁四幅不同的画中选出三幅,分别挂在左、右、前三边墙上的指定位置,共有多少种不同挂法?
师:此题和例1相似,例1的四种方法均适用。我讲一种方法,其余三种作为课后作业。从四幅画中选(3)幅挂在三边墙,可分三个步骤。第一步,从(4)幅画中选一幅挂左边墙,有(4)种选法;第二步,从剩下(3)幅画中选一幅挂右边墙,有(3)种选法;第三步,从剩下(2)幅画中选一幅挂前墙,有(2)种选法。根据分步乘法计数原理,不同挂法总数(N = 4×3×2 = 24)。
下面看例2,给程序模块命名需用三个字符,首字符要求用字母(a)到(g)或(u)到(z),后两个要求用数字(1)到(9),最多可给多少个程序命名?
师:此题需完成什么事?
生:给程序模块命名。
师:如何完成这件事呢?从分类加法计数原理和分步乘法计数原理分析。一方面,给程序模块命名可分三个步骤,第一步选首字符,第二步选中间字符,第三步选末字符;另一方面,有两类方法,第一类首字符用字母(a)到(g)命名,第二类首字符用字母(u)到(z)命名。
解法一:先算首字符选法。(a)到(g)有(7)个字母,(u)到(z)有(6)个字母,根据分类加法计数原理,首字符共有(7 + 6 = 13)种选法。再算不同程序名称,此时首字符(13)种选法,后两个字符用(1)到(9),中间字符(9)种选法,末字符(9)种选法,根据分步乘法计数原理,最多可有(13×9×9 = 1053)个不同名称,即最多可给(1053)个程序命名。
解法二:先算首字符用字母(a)到(g)命名的不同名称个数。首字符(7)种选法,中间字符(9)种选法,末字符(9)种选法,根据分步乘法计数原理,最多可有(7×9×9 = 567)个不同名称。再算首字符用(u)到(z)命名的不同名称个数。首字符(6)种选法,中间字符(9)种选法,末字符(9)种选法,根据分步乘法计数原理,最多可有(6×9×9 = 486)个不同名称。根据分类加法计数原理,最多可有(567 + 486 = 1053)个不同名称,即最多可给(1053)个程序命名。
师:大家想想还有其他解法吗?
解法三:间接法。先算首字符用字母(a)到(z)命名的不同名称个数。(a)到(z)共(26)个字母,首字符(26)种选法,中间字符(9)种选法,末字符(9)种选法,根据分步乘法计数原理,最多可有(26×9×9 = 2106)个不同名称。再算首字符用字母(h)到(t)命名的不同名称个数。(h)到(t)共(13)个字母,首字符(13)种选法,中间字符(9)种选法,末字符(9)种选法,根据分步乘法计数原理,最多可有(13×9×9 = 1053)个不同名称。所以首字符用(a)到(g)或(u)到(z)命名,最多可有(2106 - 1053 = 1053)个不同名称,即最多可给(1053)个程序命名。
