VB第11课时:解析算法、枚举算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学习重点: 1、 能说出枚举算法、解析算法的概念 2、能根据语句代码识别、运用两种算法
1、 枚举算法的概念
“枚举”字义:枚,一个一个也,举者,列举, 枚举就是一个一个列举。 枚举算法:把问题中所产生的可能的情况(解)都考虑到, 一一地全部列举出来, 并在逐一列举的过程中,检验对每个可能解进行判断(排查), 保留符合要求的结果,去掉不符合的运算过程。 在列举过程中,既不能遗漏也不应重复。
实战练习16:韩信点兵: 4个人一队剩3个,7个人一队正好不剩,21个人一队剩7个,问韩信有多少兵? (假如人数在100以内,只有一个数符合)窗体如下图: 单击command1“点兵”,在文本框Text1中显示人数。 (假如人数在1000以内,答案是多个,需列表框)
实战练习17: 已知三角形的三边,求三角形的面积: 在Text1,Text2,Text3分别输入相应的数,表示三角形的三边a,b,c (注:三边能构成三角形) 则半周长p=(a+b+c)/2,计算三角形面积公式为s=sqr(p*(p-a)*(p-b)*(p-c)), 单击命令按钮Command1“计算”,在标签Label4中显示面积S的值。 界面(如下图 )
特点:优点,只要时间足够,正确的枚举能得出正确和全面的解。 算法简单,基础。 缺点, 效率差。
例1:找出1—1000中所有能被3整除的数,并列出来。 For i=1 to 1000 If i mod 3 = 0 Then List1.Additem i End if Next i 学习新的一个VB控件类: ListBox :列表框 List1:对象名
For x = 0 To 99 y = 25006 + j * 10 If y Mod 37 = 0 Or y Mod 67 = 0 Then List1.AddItem Str(y) End If Next
3、 解析算法的概念
含义:用数学公式描述客观事物间的数量关系; 进一步解释: 用解析的方法找出表示问题的条件与所求结果之间关系的数学表达式, 并通过表达式的计算来实现问题求解。 例3:计算以速度V作为匀速直线运动的一个物体,求在t秒内经过的
距离S。
则可通过公式 S= v t得到。 例4:求1+2+3+…+n的和, S= (1+n)*n /2
例5:已知三角形的三边,求三角形的面积: 在Text1,Text2,Text3分别输入相应的数, 表示三角形的三边a,b,c(注三边能构成三角形) 则半周长p=(a+b+c)/2, 计算三角形面积公式为s=sqr(p*(p-a)*(p-b)*(p-c)), 单击命令按钮Command1“计算”,在文本框Text4中显示面积S的值。
解析算法
例6:面额为10元、20元和50元的纸币各有10张,求总额恰好为380元取 法方案的算法? 设10元取a张、20元取b张、50元取c张, a,b,c,都取到0到10之间的整数,将a,b,c取值的所有可能组合逐一 代入表达式:10 a+20 b+50c=380,判断是否成立,则输出这一方案。 此算法属于( )枚举算法?解析算法?
※ List1的特殊的使用方法名语句: List1.方法名 (Additem:添加内容; Clear:清空 ) 添加内容格式:List1.Additem 内容 ① List1.Additem “你好“ :列表框里添加 “你好“内容
Baidu Nhomakorabea
② 假如定义变量 s 是整数型,最后s的结果显示在列表框List1里的语句:
思路分析: 这个5位数的百位和十位这两个位置上, 可能是00、01、02、…..99,这100个不同的数, 从而产生全部可能解:25006、25016…259916 先设变量: 设这模糊的两位数为变量x,整个5位数为y 变量 x 的取值范围00~99,这100个不同的数 如果用循环模式
For x = 0 To 99 y = 25006 + x * 10 If y Mod 37 = 0 Or y Mod 67 = 0 Then List1.AddItem Str(y) End If Next j
List1.Additem str(s)
③ 将列表框里的内容清空语句:
或 s (软件中默认转化成字符类型)
List1.Clear
1、 枚举算法的概念
例2:有一张支票,上面的数额是5位数,其百位数和十位数处已经变得 模糊不清,如下图;但是知道这个5位数是37或67的倍数。 现在要设计一个算法,找出所有满足这些条件的5位数, 并统计这些5位数的个数。
例0: For i=1 to 12 If i mod 3 = 0 Then Next i 则语句S=S+i 执行次数是( ) A、1 B、3 C、4 D、13 S=S+i
分析:i=3、6、9、12
If i mod 3 = 0 Then S=S+I
C
Visual Basic 算法实例之 枚举算法、解析算法 第11课时
2、 枚举算法的步骤:
确定范围 一一枚举 逐个检验 得到真解
①先用循环结构(For语句)确定可能范围并一一枚举出来。 ②再用If语句写出符合条件的解(检验筛选正确的解) 因此,枚举算法语句识别规律: 一般总有循环结构,且里面嵌有If语句,但反过来不一定是枚举算法。
For i=1 to 1000 If i mod 3 = 0 Then List.Additem I End if Next i
例题分析:已知菲波那契数列的通公式为a(n+2)=a(n)+a(n+1),用数组求菲波那
契数列前20项程序段如下,请在画线处填入正确的语句或表达式。 Dim I as integer ,a(1 to 20) as integer a(1)=1: a(2)=1 For I = 3 to 20 a(i) = a(i-2)+________ next For I = 1 to 20 List1.additem________ next
相关文档
最新文档