内容正文:
实现枚举算法
1
枚举算法
1.概念:枚举算法,是一种盲目的搜索(不知道解的个数)。在确定的范围内,根据一定的条件,一 一列出所有的对象,并且逐个检查他们是否符合条件,最后挑出所有符合条件的解。
2.主要步骤:
(1)一 一列举 (2)逐个检验
3.算法结构:
循环结构
分支结构
嵌套
2
4.请判断,下列实例,哪些是枚举算法:
枚举算法
1.在一筐苹果中,挑出所有坏掉的,放在另一个框内
2.一串钥匙中有一把可以开门,但不知是哪一把,所以一个一个试
3.自行车车胎漏气,不清楚气孔位置,将车胎放在水盆中一段一段的找
实例探究
例1.请设计算法,并编写相应程序:
输入5人成绩(百分制)输出其中不及格人数
开始
结束
输入c
i<=5
True
False
i=1,s=0
c<60
s=s+1
True
False
输出s
循环体:判断输入的成绩是否及格,进行计数
i=i+1
循环体:判断输入的成绩是否及格,进行计数。
4
拓展探究
1.输入5人的成绩,输出优秀人数(>80分),合格人数(80(含80)到60),和不及格人数。
4.输入学生成绩,直到输入-1才结束。输出及格率(及格人数/总人数)和最高分。
2.现有两列表存储全家人bmi信息: name=[“爸爸”,”妈妈”,”爷爷”,”奶奶”,“小明”]
bmi=[24.9,22.3,24.5,18,25.8]。请用枚举算法输出其中bmi不健康的人,并加以提醒。
3.输出所有的三位水仙花数(如三位数“水仙花数”是指一个三位数,其各位数3次方和等于该数本身,像153就等于1的三次方,5的三次方和3的三次方之和,153=1+125+27)
5.输出1000以内的所有质数(质数指除了1和他本身,没有其他因数,比如2、7、19等)
5
答案解析
1.输入5人的成绩,输出优秀人数(>80分),合格人数(80(含80)到60),和不及格人数。
6
答案解析
2.现有两列表存储全家人bmi信息: name=[“爸爸”,”妈妈”,”爷爷”,”奶奶”,“小明”]
bmi=[24.9,22.3,24.5,18,25.8]。请用枚举算法输出其中bmi不健康的人,并加以提醒。
7
答案解析
3.输出所有的三位水仙花数(如三位数“水仙花数”是指一个三位数,其各位数3次方和等于该数本身,像153就等于1的三次方,5的三次方和3的三次方之和,153=1+125+27)
8
答案解析
4.输入学生成绩,直到输入-1才结束。输出及格率(及格人数/总人数)和最高分。
9
答案解析
5.输出1000以内的所有质数(质数指除了1和他本身,没有其他因数,比如2、7、19等)
10
课堂小结
1.主要步骤:
(1)一 一列举 (2)逐个检验
2.算法结构:
循环结构
分支结构
嵌套
3.算法优化:枚举算法效率不高,因此减少循环层数,减少循环次数(缩小范围)是效果显著的优化方式
11
实现枚举算法
12
$$