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