《用穷举法设计程序》学案.docVIP

《用穷举法设计程序》学案.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE1/NUMPAGES4

4.2《用穷举法设计程序》学案

活动一:密码问题

穷举算法基本模式:

For穷举变量1=?to?

For穷举变量2=?to?

If条件then输出答案

Next穷举变量2

Next穷举变量1

破解三位密码算法关键:

穷举变量

变化范围

验证条件

穷举次数与哪些因素有关?

你能提出反暴力破解的对策吗?

活动二:礼品问题

班里要举行班级聚会,要用600元班会费为50名同学准备50份礼品进行抽奖。你要负责去购买礼品,选定了公仔(20元/个)、水杯(15元/个)和笔筒(10元/个)三类商品。要求刚好用完600元买50件礼品(每种礼品至少一件),这三种礼品的数量可以如何搭配?有多少种方案?

环节

任务

分析问题

要求解的问题是什么?

涉及到哪些未知数和条件?

能用常用数学方法解决吗?

算法设计

穷举算法三个关键设计:

(1)有多少个穷举变量?

穷举变量

对应物品

(2)各穷举变量的变化范围是什么?

变化范围

(3)答案所需符合的条件是什么?

编写程序

打开“礼品问题”程序,根据你的算法设计,程序中“?”处应如何填写?

调试运行

点击启动运行程序,如发现错误可点击■结束运行,修改程序。

程序穷举次数为多少次?

优化穷举,提高效率:

穷举优化

观察你所完善的“礼品问题”程序运行结果,并与其他同学的运行结果比较。认真阅读问题的各个条件,尝试优化程序,在合理范围内尽量减少穷举的次数。

优化措施

优化后的穷举次数

活动三:密码问题

小陆有一EMail邮箱的密码是一个5位数。但因为有一段比较长的时间没有打开过这个邮箱了,小陆把这个密码给忘了。但他记得这个密码一定同时是61和83的倍数。小陆还记得这个密码的中间一位(百位数)是2。你能设计一个程序帮他找回这个密码吗?

序号

算法描述

程序

穷举次数分析

方案一

分别用a1、a2、a3、a4、a5表示这个5位数的各个数位(a3=2在程序中不出现),在它们的各自的范围中变化,然后组成5位数d,判断d能否同时被61和83整除即可得到结果。

Fora1=1To9a1是密码万位上的数字

Fora2=0To9a2是密码千位上的数字

Fora4=0To9a4是密码十位上的数字

Fora5=0To9a5是密码个位上的数字

d=a1*10000+a2*1000+2*100+a4*10+a5

If(dMod61=0)And(dMod83=0)ThenPrintd

Nexta5

Nexta4

Nexta2

Nexta1

方案二

分别用a1、a2、a3、a4、a5表示这个5位数的各个数位(a3=2在程序中不出现),在它们的各自的范围中变化,然后组成5位数d,判断d能否同时被61和83整除即可得到结果。

Fora=10000To99999

c=a\100Mod10

Ifc=2AndaMod(61*83)=0ThenPrint密码是:;a

Nexta

方案三

有解的范围只限于同时是61和83的倍数。61和83的最小公倍数是5063,所以我们只在5位数中是5063的倍数中进行穷举,然后分离出它的百位数字判断是否是2就能得到答案。

p=(10000\61\83+1)*61*83

Fora=pTo99999Step61*83

c=a\100Mod10

Ifc=2ThenPrint这个5位的密码是:;a

Nexta

文档评论(0)

150****1232 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档