内容正文:
课题2.4.2 基于枚举算法的问题解决
学科
信息技术
年级
高一
班 级
授课教师
章节
第二章第三节
程序设计
课题名称
基于枚举算法的问题解决
课型
新授课
授课时间
课标要求
理解枚举算法的基本原理和求解问题的基本过程,能够完善程序代码实现算法。掌握枚举算法解决问题的基本过程,学会使用枚举算法解决生活中的实际问题,提高信息安全意识
教学目标(核心素养)
·通过“票据中模糊数字推断”情境,分析数字推断的过程,理解枚举算法的基本原理。(计算思维)
·通过“百钱白鸡”“水仙花数”任务,了解枚举算法求解问题的基本过程,能用流程图描述该问题求解的算法,能编写程序并调试运行,实现问题求解。(计算思维)
·体验枚举算法的执行效率,认识优化算法的必要性。(计算思维)
·通过与生活实例的结合运用,学会使用枚举算法解决生活中的实际问题,提高信息安全意识。(信息社会责任)
教学重点
建立正确的数学模型,确定枚举方案。
教学难点
恰当安排枚举方式,感受不同算法的执行效率,体验算法优化在解决中的价值。
教学方法
讲授法,案例分析法、探究法。
教学过程
教师活动
学生活动
二次备课
新
课
引
入
一、情景引入:
模糊数字推断问题:
票据上有一个4位数字组成的编号:
甲说:数字编号的前两位数字相同,但都不是零;
乙说:数字编号的后两位数字是相同的,但与前两位不同;
丙说:数字编号是一个整数的平方。
请根据以上线索推断出编号。
教师:巡视学生学习情况,指导和帮助学生自主、协作学习,调控课堂气氛。
根据任务需求,学生枚举的方法寻找答案,找出已知条件,求解问题以及隐含关系
教 学 环 节
二、分析问题:
已知条件 : 四个数字应是AABB,其中A≠0,A≠B,且AABB是一个整数的二次方
求解目标 : 票据中的数字
已知与未知的关系 :要求解的4位数字的编号必须同时满足所有的已知条件。
图1 分析问题示例
设计算法:
根据问题分析,只要一一列举出4位数字AABB中A与B的所有可能组合,保证A≠B 且A≠0.再验证二次方问题,就可以得到同题的解。因此,该问题可使用枚举算法求解完成
用枚举算法实现解“票据中的数字”问题,如何进行问题拆解?
本问题的已知条件是什么?求解目标是什么?隐含什么样的关系?
· 一一列举可能的解,即枚举范围是多少?
· 逐一检验可能的解,判断条件是什么?
设计算法:输入数据、处理数据、输出结果
逐一列举,用循环结构就可以解决。一一校验,则需要用到分支结构,验证哪些情况满足问题的条件,如果满足就输出。
编程实现与调试:
import math
for A in range(1,10):
for B in range(0,10):
if A!=B:
k=A * 1000+A * 100+B * 10+B
c=int(math.sqrt(k))
if c*c==k:
print("票据编号是:",k)
二、枚举算法
枚举算法:依据问题的已知条件,确定答案的大致范围,在此范围内列举出它所有可能情况的方法。
枚举算法适合解决求解的答案数量有限,并且可能的答案是能按照某种规则列举出来的问题。例如,用枚举法解决一些数学问题(“韩信点兵”“鸡兔同笼”等),益智游戏和逻辑推理等。
3、 应用枚举算法解决问题
1、-水仙花数
“水仙花数”是指一个三位自然数,其各位数字的立方和等于该数本身。
例如153是“水仙花数”,因为:153 = 13 + 53 + 33。
已知条件 : 一个三位自然数,其各位数字的立方和等于该数本身
求解目标 : 求水仙花数
已知与未知的关系 :要求解的这个数必须同时满足所有的已知条件。
设计算法:
通过分别枚举三位自然数的百位、十位和个位数字,计算生成一个三位自然数,再去判断它是否是水仙花数。
用枚举算法实现解“水仙花数”问题,如何进行问题拆解?
(1) 分析问题
① 本问题需要存储哪些数据,各是什么类型?
② 用枚举算法实现解“水仙花数”问题,如何进行问题拆解?
· 一一列举可能的解,即枚举范围是多少?
· 逐一检验可能的解,判断条件是什么?
· 如何分离各位数字,并得到三位数字的立方之和?
(2) 设计算法:输入数据、处理数据、输出结果
(3) 编程调试
2、百钱白鸡问题(本节课作业zuoye11)
分析问题:1.公鸡每只5元,母鸡每只3元,小鸡3只一元;
2.用100块钱买100只鸡,问公鸡、母鸡、小鸡各多少只?
已知条件 : 公鸡每只5元,母鸡每只3元,小鸡3只一元,用1