内容正文:
第六章计数原理
6,1.3分类加法计数原理与
分步乘法计数原理的综合应用
凯里一中尹洪
2023年3月13日星期一
备
(一)
创设情境
揭示课题
【回顾】
两个计数原理
分类加法计数原理
分步乘法计数原理
一般地,完成一件事有n类不同方案,在第1类
一般地,完成一件事有n个步骤,做第一步有
方案中有m种不同的方法,在第2类方案中有m2
,种不同的方法,做第二步有m2种不同的
种不同的方法,..,在第n类方案中有mn种不
方法,.,做第n步有mn种不同的方法,
同的方法,那么完成这件事共有
那么完成这件事共有N=m×m2×.×mn
N=m1+m2+..+mn种不同的方法,
种不同的方法
分类加法计数原理针对的是“分类"问题,其中各
分步乘法计数原理针对的是“分步问题,各
种方法相互独立,用其中任何一种方法都可以做
个步骤中的方法互相依在,只有每一个步骤
完这件事
都完成才算做完这件事
【问题】计数问题是我们经常遇到的,如何利用两个计数原理快速有效解决有关问题呢?
备
(三)
阅读精要
研讨新知
例题研讨
如何看例题
从例题中学会思考
阅读领悟课本P
学习例题的常规方法
例7、例8
学习例题的正规表达
例7计算机编程人员在编写好程序以后需要对程序进行测试程序员需要知道到底有多少条执行
路径(程序从开始到结束的路线),以便知道需要提供多少个测试数据,一般地,一个程序模块
由许多子模块组成图6.1-4是一个具有许多执行路径的程序模块,它有多少条执行路径?
另外,为了减少测试时间,程序员需要设法减少测试次数,你能帮助程序员设计一个测试方法,
以减少测试次数吗?
首金
解:由分类加法计数原理,子模块1、子模块2、子模块3中的子路径条数共为
子限地目
个模晚:
子构流3
家条我归路图
得羊机路
1净转斤行得相
18+45+28=91
子模块4、子模块5中的子路径条数共为38+43=81
十模国
子树被利
条快h麻相
4条铁壮量程
又由分步乘法计数原理,整个模块的执行路径条数共为91×81=7371
在实际测试中,程序员总是把每一个子模块看成一个黑箱,即通过只考察是否执行了正确的子模块的方式
来测试整个模块这样,他可以先分别单独测试5个模块,以考察每个子模块的工作是否正常,总共需要的测试
次数为18+45+28+38+43=172
再测试各个模块之间的信息交流是否正常,只需要测试程序第1步中的各个子模块和第2步中的各个子模
块之间的信息交流是否正常,需要的测试次数为3×2=6
如果每个子模块都工作正常,并且各个子模块之间的信息交流也正常,那么整个程序模块就工作正常这样,
测试整个模块的次数就变为172+6-178
显然,178与7371的差距是非常大的,
【思考】你看出了程序员是如何实现减少测试次数的吗?
例8通常,我国民用汽车号牌的编号由两部分组成:第一部分为用汉字表示的省、自治区、直辖市简称和
用英文字母表示的发牌机关代号,第二部分为由阿拉伯数字和英文字母组成的序号,如图6.15所示
其中,序号的编码规则为:
(1)由10个阿拉伯数字和除0,I之外的24个英文字母组成:
(2)最多只能有2个英文字母
如果某地级市发牌机关采用5位序号编码,那么这个发牌机关最多能发放多少张汽车号牌?
解:由号牌编号的组成可知,这个发牌机关所能发放的最多号牌数就是序号的个数」
根据序号编码规则,5位序号可以分为三类:没有字母,有1个字母,有2个字母
冀AJR005
(1)当没有字母时,序号的每一位都是数字确定一个序号可以分5个步骤,
每步都可以从10个数字中选1个,各有10种选法根据分步乘法计数原理,
省、自治区
序号
这类号牌张数为10×10×10×10×10=100000
直辖市简际
发牌机关代号
(2)当有1个字母时,这个字母可以分别在序号的第1位、第2位、第3位、第4位或第5位,
这类序号可以分为五个子类
当第1位是字母时,分5个步骤确定一个序号中的字母和数字:
第1步,从24个字母中选1个放在第1位,有24种选法:
第25步都是从10个数字中选1个放在相应的位置,各有10种选法
根据分步乘法计数原理,号牌张数为24×10×10×10×10=240000,同样,其余四个子类号牌也各有240000张。
根据分类加法计数原理,这类号牌张数一共为24000+240000+240000+240000+240000=1200000
例8通常,我国民用汽车号牌的编号由两部分组成:第一部分为用汉字表示的省、自治区、直辖市简称和
用英文字母表示的发牌机关代号,第二部分为由阿拉伯数字和英文字母组成的序号,如图6.1-5所示
其中,序号的编码规则为:
(1)由10个阿拉伯数字和除0,I之外的24个英文字母组成:
(2)最多只能有2个英文字母
如果某地级市发牌机关采用5