《32枚举算法及程序实现(1).ppt》由会员分享,可在线阅读,更多相关《32枚举算法及程序实现(1).ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1枚举算法的基本思想枚举算法的基本思想枚举,就是将问题的可能解一个个地列举,逐一判枚举,就是将问题的可能解一个个地列举,逐一判断,即使中途找到符合的解也要继续找下去,将所有可断,即使中途找到符合的解也要继续找下去,将所有可能都找完才结束。能都找完才结束。枚举算法又叫穷举算法,其基本思想是把问题所有枚举算法又叫穷举算法,其基本思想是把问题所有的解一一地罗列出来,并对每一个可能解进行判断,以的解一一地罗列出来,并对每一个可能解进行判断,以确定这个可能解是否是问题的真正解。若是,就采纳这确定这个可能解是否是问题的真正解。若是,就采纳这个解,否则就抛弃它。个解,否则就抛弃它。3.2枚举算法及程序实现枚
2、举算法及程序实现(1)2枚举算法的实现要点枚举算法的实现要点列举与检验过程既不重复也不遗漏;列举与检验过程既不重复也不遗漏;尽可能地使可能解的罗列范围最小,以提高解决问尽可能地使可能解的罗列范围最小,以提高解决问题的效率;题的效率;用循环语句用循环语句(For语句语句)在一定范围内列举所有可能的在一定范围内列举所有可能的解;解;用选择语句用选择语句(If语句语句)判断和选择真正的解。判断和选择真正的解。3枚举算法的一般格式枚举算法的一般格式For 循环变量初始循环变量初始 To 终值终值 Step 步长步长If 检验表达式检验表达式 Then 输出解或者计数器加输出解或者计数器加1End If
3、Next 循环变量循环变量本节的学习需掌握枚举算法的基本思想,掌握枚举本节的学习需掌握枚举算法的基本思想,掌握枚举算法的程序实现方法。考查方式为选择题与填空题。算法的程序实现方法。考查方式为选择题与填空题。1如果一个自然数恰好等于它的因子之和,这个数就称如果一个自然数恰好等于它的因子之和,这个数就称为为“完全数完全数”。例如,。例如,6就是一个就是一个“完全数完全数”,因为,因为6的因子为的因子为1、2、3,而,而6123。设计一个算法找。设计一个算法找出出1000以内所有的以内所有的“完全数完全数”, 那么求解这个问题那么求解这个问题主要用到的算法是主要用到的算法是 ()A递归算法递归算法B
4、排序算法排序算法C解析算法解析算法D枚举算法枚举算法D D 2下列问题适合使用枚举算法解决的是下列问题适合使用枚举算法解决的是()A计算本月需上交的电费计算本月需上交的电费B计算全班男同学的平均身高计算全班男同学的平均身高C查找查找100以内所有能被以内所有能被2和和3整除的数整除的数D200米短跑比赛成绩排名米短跑比赛成绩排名C C 3用用50元钱兑换面值为元钱兑换面值为1元、元、2元、元、5元的纸币共元的纸币共25张。每种纸张。每种纸币不少于币不少于1张,问有多少种兑换方案。求解这个问题,最适张,问有多少种兑换方案。求解这个问题,最适合的算法是合的算法是 ()A排序算法排序算法B递归算法递
5、归算法C枚举算法枚举算法D解析算法解析算法C C 4用枚举算法求解用枚举算法求解“找出所有满足各位数字之和等于找出所有满足各位数字之和等于7的三位的三位 数数”时,在下列所列举的数值范围内,算法执行效率最高的是时,在下列所列举的数值范围内,算法执行效率最高的是 ()A从从0到到999B从从100到到999C从从100到到700D从从106到到700D D 5以下以下VB表达式中,能实现判断某数能同时被表达式中,能实现判断某数能同时被3和和5整除的是整除的是 ()Ax Mod 3 And x Mod 50Bx Mod 30 And x Mod 50Cx Mod 30 Or x Mod 50Dx
6、Mod 30 And x Mod 50D D 6. 在我国古代在我国古代孙子算经孙子算经中曾提出这样一个问题。原文是这样中曾提出这样一个问题。原文是这样的:的:“今有物,不知其数,三三数之,剩二;五五数之三,剩今有物,不知其数,三三数之,剩二;五五数之三,剩三;七七数之;剩二;问物几何?三;七七数之;剩二;问物几何?”试用枚举法来分析此题,得出如下的算法:试用枚举法来分析此题,得出如下的算法:设定寻找之数最大范围设定寻找之数最大范围max设定数设定数n的初始值为的初始值为7判断条件判断条件n n Then max m Else max n For i max To 1 Step 1 If Th
7、en max i Exit For End If Next i fact maxEnd Function请在划线处填上合适的代码,补充完整程序的功能。请在划线处填上合适的代码,补充完整程序的功能。(1)划线处的代码应填入:划线处的代码应填入:_。(2)划线处的代码应填入:划线处的代码应填入:_。注:该示例程序在素材文件夹下注:该示例程序在素材文件夹下vb14文件夹中。文件夹中。m Mod i=0 And n Mod i=0fact(m,n)10. “水仙花数水仙花数”是指一个三位数,其各位数字的立方和等于该数是指一个三位数,其各位数字的立方和等于该数本身。例如本身。例如153135333,15
8、3就一个就一个“水仙花数水仙花数”。下面。下面VB程序用来找出程序用来找出“水仙花数水仙花数”,单击,单击“列举列举”按钮按钮Command1,在列表框在列表框List1中显示所有的三位中显示所有的三位“水仙花数水仙花数”。程序运行时界。程序运行时界面如下:面如下:程序代码如下:程序代码如下:Private Sub Command1_Click()Dim i As Integer, a As Integer, b As Integer, c As IntegerFor i 100 To 999 a Val(Left(i, 1) b Val(Mid(i, 2, 1) c Val(Right(i,
9、 1) If _ Then List1.AddItem iNextEnd Sub该程序采用的算法是该程序采用的算法是_。程序划线处表达式为程序划线处表达式为_。注:该示例程序在素材文件夹下注:该示例程序在素材文件夹下vb15文件夹中。文件夹中。枚举算法枚举算法i=a3+b3+c311. 一张发票上有一个一张发票上有一个5位数的编码位数的编码(17*6),其中有十位数和,其中有十位数和百位数已模糊不清,但是知道这个数是百位数已模糊不清,但是知道这个数是36的倍数,下面的倍数,下面程序实现在列表框程序实现在列表框List1中输出所有符合条件的数,并在中输出所有符合条件的数,并在标签标签Label1
10、中输出这些位数的个数。请将下面划线处中输出这些位数的个数。请将下面划线处的代码填写完整。的代码填写完整。Private sub command1_Click() Dim i As Integer, n As Integer, c As Integer c 0 For i 0 To 99 n If Then c c 1 List1.AddItem Str(n) End If Next i Label1.Caption “一共列举出一共列举出” Str(c) “个可能的编码个可能的编码”End Sub阅读代码,程序请将程序划线处的语句或表达式填充完整。阅读代码,程序请将程序划线处的语句或表达式填充
11、完整。(1)划线处的代码应填入:划线处的代码应填入:_。(2)划线处的代码应填入:划线处的代码应填入:_。注:该示例程序在素材文件夹下注:该示例程序在素材文件夹下vb16件夹中。件夹中。n Mod 36=0(1700+i)*10+612. 某木材加工厂需要把购入的木料切割成长度为某木材加工厂需要把购入的木料切割成长度为3米和米和7米两种规米两种规格的线材。现要求编写格的线材。现要求编写VB程序程序(运行界面如下图所示运行界面如下图所示),实现如,实现如下功能:在文本框下功能:在文本框Text1中输入木材长度,单击中输入木材长度,单击“计算计算”按钮按钮Command1,计算出一种废料长度最小的
12、切割方案,在文本框,计算出一种废料长度最小的切割方案,在文本框Text2和文本框和文本框Text3中分别输出该切割方案所得中分别输出该切割方案所得3米和米和7米两种规米两种规格线材的数量。按此要求编写的程序如下:格线材的数量。按此要求编写的程序如下:Private Sub Command1_Click () Dim length As Single木料长度木料长度 Dim min As Single最小废料长度最小废料长度 Dim x As Integer3米规格线材数量米规格线材数量 Dim y As Integer7米规格线材数量米规格线材数量 Dim f As Single废料长度废料长
13、度 Dim a As Integer废料最少的切割方案所得废料最少的切割方案所得3米规格线材数量米规格线材数量 Dim b As Integer废料最少的切割方案所得废料最少的切割方案所得7米规格绒材数量米规格绒材数量 length Val(Text1.Text) min length For x0 To length3 y=(length-3*x)7 (1) If fmin Then minff=3*x+7y ax (2) End If Next x Text2.TextStr(a) Text3.TextStr(b)End Suby=b程序加框处代码有错,请改正。程序加框处代码有错,请改正。(1)加框处代码应改为加框处代码应改为_。(2)加框处代码应改为加框处代码应改为_。f=length-3*x-7*yb=y