高中信息技术人教中图版必修1 数据与计算第2章 算法与程序实现2.4.2 基于枚举算法的问题解决.docx

高中信息技术人教中图版必修1 数据与计算第2章 算法与程序实现2.4.2 基于枚举算法的问题解决.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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次

我们从时间复杂度及代码的简化程度上分析,可以发现第二种方案更优,枚举需要一一列举所有情况,运算量较大,效率不够高,我们在用它解决问题时需要注意要选择恰当的枚举对象,尽量分析隐含条件,缩小枚举范围。

枚举算法要注意的问题:

不能遗漏任何一个正确解

尽可能地缩小

文档评论(0)

K12教育资源 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年02月03日上传了教师资格证

1亿VIP精品文档

相关文档