枚举算法及程序实现.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
枚举算法及程序实现 象山二中 章正喜 什么是枚举算法 ? 暴力破解事例:假如我有一个 QQ 的密码是一位 数字,同学们想想好不好破解,如何破解? ? 将所有可能的解列出来考证每个可能解是否为真正的解, 最终过 滤掉不符合要求的,保留符合要求的结果,这种方法叫做枚举算法 ( enumerative algorithm ) . 注意:在列举的过程中不要遗漏任何 可能,但是也不要重复列举。 枚举算法举例 ? 问题:一张单据上有一个 5 位数的编号,其百位数和十 位数已经变得模糊不清,如下图所示,但是知道这个 5 位数是 37 或 67 的倍数,现在请你找出所有可能的五位 数? 枚举算法举例 ? 算法: 25ab6 ab 是十位和百位上的数字,可能的取值 00-99 ,故从 00 开始列举到 99 当 n=25*1000+ab*10+6 能被 37 或者 67 整除时,就是一个真正解 j : 循环控制变量,记录已经进行循环的次数,并决定循环是否进行 , 并依次枚举产生十位和百位上的可能数字 c : 计数器,用来存放已经找到的解的个数 n : 存储可能的解 程 序 实 现 Dim c, n, j As Integer ‘ 定义三个变量 c = 0 ‘ 计数器 c 置初值 0 For j = 1 To 99 ‘for ……next 控制循环 n = 25 * 1000 + j * 10 + 6 ‘n 的值 If n Mod 37 = 0 Or n Mod 57 = 0 Then ‘ 判断 Print n; ‘ 输出 c = c + 1 End If Next j 分析探讨 求前 1000 个奇自然数中,计算恰好有三位为 1 的二进制数的个数(例 19 对应二进制数 10011, 是符合条件的,而 23 对应的二进制数 10111, 则不符合条件) ? 代码 1 : 置计数器 C 的值为 0 ? for I=1 to 1000 ? 把 I 化成二进制数 K 计算 K 中值为!的个数 W if w=3 then c=c+1 ? 代码 2 : 置计数器 C 的值为 0 ? for I=1 to 2000 ? 把 I 化成二进制数 K 计算 K 中值为!的个数 W if w=3 then c=c+1 代码 3 : 置计数器 C 的值为 0 ? for I=1 to 1000 ? 计算第 I 个奇数 j: j=2*I-1 ? 把 j 化成二进制数 K 计算 K 中值为!的个数 W if w=3 then c=c+1 Next i 结 论 1 、不要遗漏任何一个真正解,这是问题所要求的; 2 、尽可能的使可能的罗列范围最小,这是为了提高解 决问题的效率。 作业: p100 面第 1 题

文档评论(0)

jinzhuang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档