枚举算法=循环结构分支结构

  • 格式:ppt
  • 大小:385.50 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问题:
陈婷有一个QQ的密码是一个5位数。但因为有一段 时间没有上QQ,陈婷把这个密码给忘了。不过陈 婷自己是8月1日出生,而她妈妈的生日则是9月1 日,爸爸的生日是10月4日,她只记得密码是81、 91和104的公倍数。你能设计一个vb程序帮她找回 这个密码吗? 分析: 陈婷QQ的密码是一个5位数 81、91和104的公倍数
什么是枚举算法
“鸡、兔同笼问题” 鸡、兔共79只,200只脚在笼里走,试问多有少只 鸡?多少只兔? 枚举法就是按问题本身的性质,一一列举出该问 题所有可能的解,并在逐一列举的过程中,检验 每个可能解是否是问题的真正解,若是,我们采 纳这个解,否则抛弃它。
解题过程
解题过程分两步: 逐一列举可能的解的范围。这个过程用循环结构 实现。 对每一个列举可能的解进行检验,判断是否为真 正的解。这个过程用分支结构实现。 枚举算法=循环结构+分支结构,循环结构内嵌套 选择结构
结构流程图
开始 输入 循环结构 分支结构
作用:逐一列举可能 解的范围
输出 结束
作用:逐一检验可能 解的是否是真解
代码填空
Dim chicken As Integer Dim foot As ( integer ) For chicken=1 to ( 79 ) foot = ( Chicken*2+(79-chicken)*4 ) If ( Foot=200 ) ( then ) Print "鸡:" + Str( chicken ) End If Next
For j=1 to 99
课堂总结 枚举算法=循环结构+分支结构 做到既不遗漏任何一个解、也不重复. 枚举算法效率较低. 并不是所有的问题都可以使用枚举算法来求解,只有当问 题的所有可能解的个数不太多时,并在可以接受的时间内 得到问题的所有解,才有可能使用枚举算法 。
流程图
开始 i=10000
i<=99999
Y
判断i是否是正确的解
Y 输出i
i=i+1
结束
百度文库 Mod运算
Mod:取余运算 9 mod 2=? 1 10 mod 5=? 0 9 mod 2 and 10 mod 2=? (true/false) false
拓展任务 例:一份单据被涂抹的数字的推算。
J 0 1 2
98 99 乘以10 00 10 20 980 990
……
加上25006 25006 25016 25026
25986 25996
验证条件: N MOD 37=0 OR N MOD 67=0
Do循环与for循环互换
j = 1 Do While j<=99 n = 25006 +j*99 If n Mod 37 = 0 Or n Mod 67 = 0 Then List1.AddItem Str(n) c = c + 1 Next j End If j =j+1 Loop
问题:一张单据上有一个5位数的编号,其百位数和十位数处已 经变得模糊不清,如图所示。但是知道这个5位数是37或67的倍 数。现在要设计一个算法,找出所有满足这些条件的5位数。并 统计这些5位数的个数。
00 01
99 03 02 01 98 00 02 03 …… 98 99
J
让变量J依次取0到99这100个不同的值,同时对于J的每 个确定的值乘以10加上25006这样就能形成一个可能解.