1、1 课程基本信息 课题枚举算法 教科书 书名:信息技术必修 1 数据与计算 人民教育出版社;中国地图出版社出版日期:2019 年 6 月 教学目标 教学目标: 1.理解枚举算法的基本思想; 2.认识问题解决过程中枚举算法的效率, 通过不同解题方法的比较, 体验算法的优 化,合理选择算法; 3.体验程序设计的基本过程, 通过对问题进行分析, 根据实际问题的需要选用不同 的算法,编写程序并进行调试和完善,形成用计算机解决问题的具体方案。 教学重点: 1.理解枚举算法的基本思想; 2.通过不同解题方法的比较,体验算法的优化并合理选择算法。 教学难点: 根据现实问题的需要,灵活运用枚举算法解决实际问题
2、。 教学过程 时间 教学 环节 主要师生活动 2 3 复习旧知 引入主题 在前面的学习中,我们学习了三种程序结构,了解了解析算法 的思想:通过找出解决问题的前提条件与结果之间关系的表达式, 并计算表达式的值来实现问题的求解。 解析法求解 “鸡兔同笼” 问题: 今有雉兔同笼, 上有三十五头, 下有九十四足,问雉兔各几何? 除了解析法,有没有其他的方法解决鸡兔同笼问题呢? 回忆我们在循环结构中学过的密码破解的实例,能不能像破解 密码一样,通过一个一个地去尝试,找到满足条件的鸡和兔的数量 呢? 3 8 新知学习 算法思想 枚举算法的思想 例 1枚举法解“鸡兔同笼”问题 (1)分析问题 本问题的已知条
3、件是什么?求解目标是什么?隐含什么样 的关系? x + y = 35 2x + 4y = 94 列举出所有可能,逐一尝试验证,输出其中满足题目条件的鸡 兔数量,这就是枚举算法的思想。 用用枚举算法实现解 “鸡兔同笼” 问题, 如何进行问题拆解? 一一列举可能的解,即枚举范围是多少? 逐一检验可能的解,判断条件是什么? (2)设计算法:输入数据、处理数据、输出结果 逐一列举,用循环结构就可以解决。一一校验,则需要用到分 支结构,验证哪些情况满足问题的条件,如果满足就输出。 4 (3)编程调试 算法的优化:分析两种代码的循环执行次数,在解决实际问题 的过程中,由于枚举算法需要将所有可能情况一一列举
4、,当数据范 围比较大时, 要尽可能将枚举范围降至最小, 提高解决问题的效率。 试一试:试一试:用自己的话说一说,枚举算法的思想是什么? 一一列举,逐一检验一一列举,逐一检验 即:列举出所有可能的情况并逐一进行检验,根据检验的结果 执行相应操作。 5 枚举算法要注意的问题: 12实践活动 实践活动实践活动 1 1:小明的幸运年:小明的幸运年 有人问小明的年龄,小明说:今年是我的幸运年。我出生年份 的四位数字加起来刚好是我的年龄(周岁) 。已知今年是 2020 年, 请推断出小明的出生年份(4 位整数) 。 解法一:解法一: (1)分析问题 本问题需要存储哪些数据,各是什么类型? 用用枚举算法实现
5、解“小明的幸运年”问题,如何进行问题 拆解? 一一列举可能的解,即枚举范围是多少? 逐一检验可能的解,判断条件是什么? 如何根据输入年份,得到四位数字之和? 以“1949”为例,讲解数字拆分的过程: (2)设计算法:输入数据、处理数据、输出结果 6 (3)编程调试 将一段逻辑相对独立、功能相对单一的代码封装成一个函数, 可以提高代码的可读性和可重用性。 可以直接调用定义的 resolve 函数,一一列举,逐一检验: 解法二解法二: 将输入年份先强制转换为字符串,通过 for 循环结构将每个字 符取出,转换为整型数据,再进行累加,也能完成该功能。 在编写程序解决问题的过程中,要注意灵活使用 Py
6、thon 的各 种运算符解决问题。 7 实践活动实践活动 2 2:水仙花数:水仙花数 “水仙花数”是指一个三位自然数,其各位数字的立方和等于 该数本身。 例如 153 是“水仙花数”,因为:153 = 1 3 + 5 3 + 3 3。 解法一:解法一: (1)分析问题 本问题需要存储哪些数据,各是什么类型? 用用枚举算法实现解 “水仙花数” 问题, 如何进行问题拆解? 一一列举可能的解,即枚举范围是多少? 逐一检验可能的解,判断条件是什么? 如何分离各位数字,并得到三位数字的立方之和? (2)设计算法:输入数据、处理数据、输出结果 (3)编程调试 解法二:解法二: 通过分别枚举三位自然数的百位
7、、十位和个位数字,计算生成 一个三位自然数,再去判断它是否是水仙花数。 一一列举可能的解,即枚举范围是多少? 8 逐一检验可能的解,判断条件是什么? 通过这两个实践活动,我们发现,同一个问题,可以从不同的 角度思考,实现问题求解。在算法的学习中,大家要多思考,多和 身边的同学们讨论,碰撞出更多思维上的火花。 枚举算法的应用:枚举算法的应用: 想一想:想一想:以下问题可以用枚举算法解决吗? 说一说说一说:除了上述问题之外,生活中有哪些问题是可以用枚举 算法来解决的? “开心辞典”栏目中的“二十四点”的趣味题 逻辑问题:警察抓小偷问题 2 知识梳理 归纳总结 (一)帮助学生梳理教学线索,总结重点内容。 1. 枚举算法的基本思想 2. 枚举算法的结构特征 3. 枚举算法的应用 (二)布置课后练习,学生自测学习效果,进行查缺补漏。 编写程序解决以下问题: Q1:从 2000 年到 2050 年,哪些年份是闰年? 能够被 4 整除但不能被 100 整除的是闰年 9 能够被 400 整除的也是闰年 Q2:寻找 1000 以内的所有素数。