- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
教学设计
课程基本信息
学科
信息技术
年级
高一
学期
秋季
课题
2.4.2基于枚举算法的问题解决
教学目标
1.进一步体验算法思想,通过实例了解用枚举法解决问题的基本方法。(信息意识)。
2.理解枚举算法的核心思想,抽取数学模型(计算思维)。
3.体验枚举算法的执行效率,认识优化算法的必要性(数字化学习与创新)
教学重难点
教学重点:
1.建立正确的数学模型,确定枚举方案。
2.能结合实际问题,编写程序实现枚举算法并调试运行,解决问题。
教学难点:
1.恰当安排枚举方式,感受不同算法的执行效率,体验算法优化在解决问题中的价值。
教学过程
一、导入
在前面的学习中,我们学习了三种程序结构,顺序结构,选择结构,循环结构。了解了解析算法的思想:通过找出解决问题的前提条件与结果之间关系的表达式,并计算表达式的值来实现问题的求解。
今天我们来一起学习一种新的算法枚举算法。枚举就是一一列举。枚举法在生活中也常常用到。
如:在一筐水果中找出坏掉的水果扔掉,一个一个查看,然后去除坏的水果。
在一串钥匙中找出所有能打开这把锁的钥匙,一把一把地试,找到然后取出。
忘记了三位数密码箱的密码,从000开始,001,002…………找到正确密码后记下来。
在计算机解决问题的过程中也常常用到这种方法。我们把它叫做枚举算法。
设计意图:复习以前所学内容,为这节课学习做铺垫,引入生活中的例子更好理解枚举算法。
二、新课讲授
枚举算法:
1、概念:依据已知条件,确定答案的大致范围,在此范围内列举出所有的可能的方法。
注意:一一列举,不能遗漏,不能重复,逐一检验要确定正确的检验条件。
2、实现方法:运用循环结构嵌套分支结构实现,流程图如右所示:
3、基本框架:
for(列举所有可能解):也可以使用while语句实现
if(判断条件):
输出解
设计意图:学生学习枚举算法概念并分析其实现方法和基本框架,为解决实际问题做准备。
探究活动一:
票据上有一个4位数字组成的编号:
甲说:数字编号的前两位数字相同,但都不是零;
乙说:数字编号的后两位数字是相同的,但与前两位不同;
丙说:数字编号是一个整数的平方。
根据以上线索推断出编号。
学生思考:你怎样应用学过的知识进行推断?
1、分析问题:
教师引导学生思考并回答
分析出已知条件、求解目标、已知和未知之间的关系
已知条件:四个数字应是AABB,其中A≠0,A≠B,且AABB是一个整数的二次方
求解目标:票据中的数字
为了方便表达枚举对象与检验条件,我们可以将这个四位数设为变量k,前两位上的数字设为变量A,后两位上的数字设为变量B,其中的一个整数设为变量c。
枚举对象
枚举范围
检验条件
A
1-9之间的整数
A≠B
c*c=k
B
0-9之间的整数
2、设计算法:
根据问题分析,只要一一列举出4位数字AABB中A与B的所有可能组合,保证A≠B?且A≠0.
3、编写程序,解决问题。
importmath
forAinrange(1,10):
forBinrange(0,10):
ifA!=B:
k=A*1000+A*100+B*10+B
c=int(math.sqrt(k))#求票据中数字的平方根并取其整数部分
ifc*c==k:#若k是完全平方数,则找到该票据编号
print(票据编号是:,k)
4、保存文件,运行程序。
设计意图:通过实际案例体会用枚举算法解决实际问题的过程。
实践活动
活动二.枚举法解“鸡兔同笼”问题
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?(雉兔至少有一只)
分析问题
列举出所有可能,逐一尝试验证,输出其中满足题目条件的鸡兔数量.
以上方案不太聪明,效率太低。
我们发现鸡和兔子头数量和为35,我们只需列举鸡的只数,兔的只数也相应确定,如下表:
一一列举可能的解,即枚举范围是多少?
鸡的数量:1~34
逐一检验可能的解,判断条件是什么?
鸡与兔共94只脚
设计算法:输入数据、处理数据、输出结果
逐一列举,用循环结构就可以解决。一一校验,则需要用到分支结构,验证哪些情况满足问题的条件,如果满足就输出。
编程调试
代码1
循环执行34*34次
代码2
循环执行34次
我们从时间复杂度及代码的简化程度上分析,可以发现第二种方案更优,枚举需要一一列举所有情况,运算量较大,效率不够高,我们在用它解决问题时需要注意要选择恰当的枚举对象,尽量分析隐含条件,缩小枚举范围。
枚举算法要注意的问题:
不能遗漏任何一个正确解
尽可能地缩小
您可能关注的文档
- 初中语文八年级下册单元整体复习:民俗里的中国——第一单元复习课(第一课时).docx
- 初中语文七年级上册:第六单元整合复习(第二课时).docx
- 初中语文七年级上册:第六单元整合复习(第一课时).docx
- 初中道德与法治八年级上册:以礼待人复习.docx
- 初中道德与法治八年级上册:关爱他人 奉献社会复习.docx
- 初中数学浙教版九年级上册:3.5 圆周角-教学课件 (1)第二课时.pptx
- 初中道德与法治八年级上册:遵守规则复习.docx
- 初中历史与社会人教版人文地理下册:地域差异显著.docx
- 初中数学浙教版八年级下册:4.2 平行四边形及其性质-教学课件.pptx
- 初中数学浙教版八年级上册:3.4 一元一次不等式组-教学课件 (2).pptx
文档评论(0)