算法的程序实现——解析法、穷举法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法的程序实现——解析法、穷举法
一、目标导学:
1、认识并学会使用解析法、穷举法分析问题、解决问题;
2、尝试编程实现解析法、穷举法实例。
二、自主探究:
1、解析法:
就是在分析具体问题的基础上,抽取出一个数学模型,这个数学模型能用若干解析表达式表示出来,解决了这些表达式,问题也就得以解决。
用解析法解决问题的关键是寻找________________。
☆实例:画钻石图案(如右图,教师机展示)
分析:钻石图案是由一个圆周上的各个点的连线组成的,要首
先建立一个坐标系,并求出各个点的坐标,然后画线(line方法)。
如右图:可以得出第一个点的坐标是(r*cos(θ),r*sin(θ)),
第二个点的坐标是(r*cos(2*θ),r*sin(2*θ)),……依次类推,
可得出所有点的坐标。
实现:(1)设置界面。在form1上添加picture1和command1。
设置picture1的height和width属性相等,command1的caption
属性为“绘制钻石”。
(2)双击command1按钮,打开其代码窗口,输入相关代码。
运行验证。
Private Sub Command1_Click() Const pi = 3.14159265
Dim i As Integer, j As Integer
Dim x1 As Single, y1 As Single Dim x2 As Single, y2 As Single Dim a As Single
Dim r As Single
Dim nodes As Integer
Picture1.Scale (-1.5, 1.5)-(1.5, -1.5) Picture1.Cls
r = 1
nodes = 15
a = 2 * pi / nodes For i = 1 To nodes
x1 = r * Cos(a * i)
y1 = r * Sin(a * i)
For j = 1 To nodes
If i <> j Then
x2 = r * Cos(a * j)
y2 = r * Sin(a * j)
Picture1.Line (x1, y1)-(x2, y2), vbBlue End If
Next j
Next I
End Sub
2、穷举法:(枚举法、列举法)
将求解对象一一列举出来,然后逐一加以分析、处理,并验证结果是否满足给定的条件,穷举完所有对象,问题最终得以解决。 ☆实例: 输出100~200间不能被3整除的数。
分析:验证100到200间所有的数,如果满足条件则输出。 实现:在窗体上添加command1按钮,在其代码窗口中输入代码,如右所示。
说明:
(1)10个数打印一行,a 为计数变量。i 为要验证的数。
(2)“Print ”为打印一回车,光标跳至下一行;“Print i;” 为在当前位置打印,光标向后移动。 三、交流点拨:
思考:1、我们前面解决的以下问题用的是解析法还是穷举法?
“韩信点兵”_________ “圆的周长、面积”__________“水仙花数”__________ 2、穷举法的适用问题的范围?
求解对象是________(有限/无限) 的,________(可/不可)按规则列举。 一元二次方程求根________(可/不可)用穷举法列举?
四、建构拓展:
五、效果评价:
姓名 解析法 穷举法 交流点拨 建构拓展
Private Sub Command1_Click()
Dim a As Integer, i As Integer a = 0
For i = 100 To 200
If i Mod 3 <> 0 The n If a = 10 The n Print a = 0 Else
a = a + 1 Print i; End If End If Next I print End Sub