内容正文:
6.1分类加法计数原理与分步乘法计数原理
第2课时
1.分类加法计数原理:
完成一件事有两类不同方案,在第1类方案中有m种不同的方法,在第2类方案中有n 种不同的方法,那么完成这件事共有N=m+n种不同的方法.
推广:如果完成一件事有n类不同方案,在第1类方案中有m1种不同的方法,在第2类方案中有m2种不同的方法,…,在第n类方案中有 mn种不同的方法,那么完成这件事的方法总数为 N=m1+m2+…+mn.
复习引入
2.分步乘法计数原理:
完成一件事需要两个步骤,做第1步有 m种不同的方法,做第2步有n 种不同的方法,那么完成这件事共有N=m×n种不同的方法.
推广:如果完成一件事需要n个步骤,做第1步有m1种不同的方法,做第2步有m2种不同的方法,…,做第n步有mn种不同的方法,那么完成这件事的方法总数为N=m1×m2×…×mn
复习引入
例4.要从甲、乙、丙3幅不同的画中选出2幅,分别挂在左右两边墙上的指定位置,问共有多少种不同的挂法?
分析:要完成的一件事情是“3幅不同的画中选出2幅,并分别挂在左右两边墙上”,可以分步完成.
解:从3幅画中选出2幅,分别挂在左右两边墙上,可以分两个步骤完成:第1步,从3幅画中选1幅挂在左边墙上,有3种选法:第2步,从剩下的2幅画中选1幅挂在右边墙上,有2种选法.根据分步乘法计数原理,不同挂法的种数N=3×2=6.
6种挂法如图6.1-2所示
左边 右边 得到的挂法
甲
乙
丙
图6.1-2
左甲右乙
左甲右丙
左乙右甲
左乙右丙
左丙右甲
左丙右乙
乙
丙
甲
丙
甲
乙
新知探究
例5.给程序模块命名,需要用3个字符,其中首字符要求用字母A~G或U~Z,后两个要求用数字1~9,问最多可以给多少个程序命名?
分析:要完成的一件事情是“给一个程序模块命名”,可以分三个步骤完成:第1步,选首字符:第2步,选中间字符:第3步,选最后一个字符.而首字符又可以分为两类.
解:由分类加法计数原理,首字符不同选法的种数为7+6=13.后两个字符从1~9中选,因数字可以重复,所以不同选法的种数都为9由分步乘法计数原理,不同名称的个数是 N=13×9×9=1053
即最多可以给1053个程序模块命名.
在解题时有时既要分类又要分步
新知探究
例6. 电子元件很容易实现电路的通与断、电位的高与低等两种状态,而这也是最容易控制的两种状态.因此计算机内部就采用了每一位只有0或1两种数字的记数法,即二进制.为了使计算机能够识别字符,需要对字符进行编码,每个字符可以用一个或多个字节来表示,其中字节是计算机中数据存储的最小计量单位,每个字节由8个二进制位构成.问:
(1)一个字节(8位)最多可以表示多少个不同的字符?
(2)计算机汉字国际码(GB码)包含了6 763个汉字,一个汉字为一个字符,要对这些汉字进行编码,每个汉字至少要用多少个字节表示?
=256个
(2).2个字节 (65536个)
分析:要完成的一件事情是“确定1个字节各二进制位上的数字”,由于每个字节有8个二进制,每一位上的值有0,1两种选择,而且不同的顺序代表不同的字符因此可以用分步乘法计数原理求解.如图6.1-3.
第1位 第2位 第3位 第8位
···
2种 2种 2种 2种
图6.1-3
新知探究
例7. 计算机编程人员在编写好程序以后需要对程序进行测试,程序员需要知道到底有多少条执行路径(即程序从开始到结束的路线),以便知道需要提供多少个测试数据.一般地,一个程序模块由许多子模块组成.如图所示是一个具有许多执行路径的程序模块.
(1)这个程序模块有多少条执行路径;
(2)为了减少测试时间,程序员需要设法减少测试次数,你能帮助程序员设计一个测试方法,以减少测试次数吗?
新知探究
开始
子模块1
18条执行路径
子模块5
43条执行路径
子模块4
38条执行路径
子模块3
28条执行路径
子模块2
45条执行路径
结束
A
91×81=7371条
172+6=178次
图6.1-4
新知探究
例8. 通常,我国民用汽车牌的编号由两部分组成:第一部分为用汉字表示的省、自治区、直辖市简称和用英文字母表示的发牌机关代号,第二部分由阿拉伯数字和英文字母组成的序号(如图6.1-5).
最多能给 7 060 000 辆汽车上牌照.
冀A·JR005
图6.1-5
其中,序号的编码规则为:
(1)由10个阿拉伯数字和O,I之外24个英文字母组成;
(2)最多只能有2个英文字母.如果某地级市发牌机关采用5位序号编码,那么这个发牌机关最多能发放多少张汽