《高中信息技术枚举算法.ppt》由会员分享,可在线阅读,更多相关《高中信息技术枚举算法.ppt(16页珍藏版)》请在课桌文档上搜索。
1、枚举算法,例1:一天小明回家看见妈妈好像有什么心事,于是小明关心地询问妈妈,怎么回事?妈妈告诉小明,她不小心将单位的记录账目的单据碰到了污迹,现在很难认出,这个数字是:113702?,怎么办?小明想了一想后,问妈妈这数有什么特点?妈妈说:“这数是144的整数倍”,马上,小明就帮助妈妈解决了这个问题。,1137021,1137022,1137023,、,1137029,枚举法:象这种列举出问题的所有可能解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它,这种解决问题的方法叫做枚举法。,注意:在列举的过程中不能遗漏,也不应重复。,枚举算法找到的真正解不一定
2、是唯一的。,第一步:列出所有可能的解,X=,1137020+i,返回,1137021,1137022,1137023,、,1137029,第二步:根据条件,检验出真正的解,开始,i=0,i=9,X=1137020+i,i=i+1,结束,T,F,X mod 144=0,输出X,请同学们把程序填写完整,问题的诊断,Private Sub Command1_Click()Dim i,x As LongList1.Cleari=0Do While i=9 x=1137020+i If x Mod 144=0 Then List1.AddItem(Str(x)输出X的意思else nothingLoop
3、End Sub,End if,i=i+1,编程中存在的问题分支语句,实现分支结构的语句if 应该与end if成对出现,单分支语句中不存在else语句。二是在书写的时候,要注意执行语句的缩进,这样使程序看起来十分清晰,以方便我们的调试。If 条件 then 语句组1 else 语句组2 end if,编程中存在的问题循环语句,当循环语句中遗漏了loop(表示循环)的语句,以及在计数法控制循环中缺少了循环变量增量的语句,而造成了死循环。Do while 条件 循环体 循环变量=循环变量+步长loop,例2:如果模糊数字是249?16,它是144的整数倍。,2490016,2490116,2490
4、216,2491116,2492116,、,2499916,开始,第二步:根据条件,检验出真正的解,i=_,i=,X=,i=i+1,结束,T,F,99,2490016+i*100,0,提高题(模糊数据二):模糊数字是465?7?6,它是144的整数倍。,第一步:列出所有可能的解,千位数为0,十位数从09一一枚举:,千位数为1,十位数从09一一枚举:,千位数为9,十位数从09一一枚举:,、,开始,i=,=9,i=i+1,结束,T,F,注意:在列举出所有解的过程中,既不能遗漏也不应重复。,十位数从09一一枚举,0,i,提高题(模糊数据二):模糊数字是465?7?6,它是144的整数倍。,第一步:列
5、出所有可能的解,千位数为0,十位数从09过一遍:,千位数为1,十位数从09过一遍:,千位数为9,十位数从09过一遍:,、,开始,i=0,=9,j=9,j=0,X=,j=j+1,i=i+1,结束,T,F,T,F,4650706+1000*i+10*j,注意:在列举出所有解的过程中,既不能遗漏也不应重复。,i,提高题(模糊数据二):模糊数字是465?7?6,它是144的整数倍。,第二步:根据条件,找出真正的解,开始,i=0,i=9,j=9,j=0,X=,j=j+1,i=i+1,结束,T,F,T,F,4650706+1000*i+10*j,千位数为0,十位数从09过一遍:,千位数为1,十位数从09过
6、一遍:,千位数为9,十位数从09过一遍:,、,注意,在双重循环中,外循环每变化一次,内循环变量要取遍所有可能的值。,请同学们列举生活中可以使用枚举算法来解决的问题,课堂小结,1、什么是枚举法:,列举出问题的所有可能解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。,2、枚举法的特点:,在列举的过程中,,真正解不一定唯一,既不能遗漏也不应重复,,3、注意:,并不是所有的问题都可以使用枚举算法来寻找答案的,仅当问题的所有可能解的个数不太多时,才有可能使用枚举法,才可能在有限的时间内获得问题的解。,当可能解的个数很多的时候,我们可以根据问题的性质不同,采用其他比较好的搜索算法寻找答案,如递归算法,深度优先算法、广度优先算法、动态归划等来解决问题。,在很多时候,实现枚举算法的结构是,循环结构嵌套分支结构.,作业,复习枚举算法,预习冒泡排序算法。,