内容正文:
枚举算法
课题
枚举算法
单元
算法与程序设计
学科
信息
年级
八年级
主备人
时间
教学目标
1、理解枚举算法的思想,掌握枚举算法的步骤。
2、初步掌握枚举算法的程序设计方法,提高分析问题、解决问题的能力。
重点
枚举算法解决问题的思想和步骤,循环嵌套语句的使用。
难点
枚举算法的程序实现。
教 学 过 程
二次备课
一、生活中的枚举实例
1、在一串相同的钥匙中找到所有能开启某扇门的钥匙?
一把一把地去试,找到后取出来。
2、课代表收作业时,将不同学科的作业混在一起了?
一本一本地检查归类。
3、忘记了三位数密码箱的密码了?
从000开始,001,002……找到正确密码后记下来。
二、初识枚举算法
计算机由于运算速度快和存储容量大的特点,经常会采用最原始的解决方法——枚举算法(穷举法)。
枚举算法核心思想——列举,逐一检验。
例1:水仙花数——三位数,每个数位上的
数的3次幂之和等于它本身。
例2:要求:在15到100中,找出所有是3倍数的自然数。
1、确定枚举对象:自然数 i
2、确定枚举范围:15到100之间
3、确定判断条件:为3的倍数
4、逐一枚举并验证:循环、判断
三、经典案例:百钱买百鸡
我国古代数学家张丘建在他的《算经》一书中提出了著名的“百钱买百鸡”问题:鸡翁一值钱五;鸡母一值钱三;鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
(一)问题分析
1、确定枚举对象,范围和条件。
2、逐一枚举可能的解, 并根据条件验证每个解是否为问题的解。
不重复、不遗漏、有次序、有规律
(二)算法设计
验证
条件
(三)编写代码
(四)调试运行
按F5键,观察运行结果。
(五)优化程序
1、减少枚举范围
2、减少枚举对象
3、减少枚举对象及范围
使用枚举算法解决问题时,要尽量减少枚举对象和枚举范围,以提高算法效率。
四、随堂练习
1、将一张100元面额的纸币兑换成零钱(5元,10元,20元中任意多个面额),编写程序计算有多少种换法。
(拓展练习)2、完全数又称完美数,是一些特殊的自然数,其因数(不包含本身)的和恰好等于它本身。
第一个完全数是6,6=1+2+3。
第二个完全数是28,28=1+2+4+7+14
第三个完全数是496,496=1+2+4+8+16+31+62+124+248
要求:请找出10000以