用解析法和穷举法设计程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1—4.2 用解析法、穷举法设计程序
【学习目标:】1、理解解析法和穷举法
2、分清两者之间的区别
在经过大量编程实践之后,人们总结出很多行之有效的算法来解决实际问题。常用的方法有:解析法、穷举法、查找法、排序法、递归法等。
4.1 解析法
所谓解析法是指:通过分析问题中各要素之间的关系,用最简练的语言或形式化的符号来表达它们的关系,得出解决问题所需的表达式,然后设计程序求解问题的方法。
例1:求三角形面积
已知a、b、c分别为三角形的三条边长,利用海伦公式求该三角形面积
p=(a+b+c)/2
编程实现:输入边长a,b,c,如果能构成三角形,输出面积,否则输出“No Answer!”界面如下:
Dim a As Single , b As Single , c As Single
a=val(text1.text)
b=val(text2.text)
c=val(text3.text)
If then
p=(a+b+c)/2
s=sqr(p*(p-a)*(p-b)*(p-c))
text4.text=format(s,”0.00”) ‘结果保留两位小数
Else
text4.text=”no answer”
End If
根据上述回答下列问题(8分,每空4分)
(1)、利用海伦公式求三角形面积的算法是_____(解析法/查找法/枚举法/排序法)。(2)、填写出参考程序中空白处的表达式________(填写字母:A/B/C/D)
A、a + b > c or a + c > b and b + c > a
B、a + b > c or a + c > b or b + c > a
C、a + b > c and a + c > b or b + c > a
D、a + b > c and a + c > b and b + c > a
(1)解析法(2)D
用解析法求解问题,许多时候并非只是计算一个解析式就可以完事,还要根据问题给出的已经条件,运用归纳、演绎等逻辑方法,揭示问题各要素之间的关系,寻找表示这种关系的表达式,有时需要计算的解析式是一组而不仅仅是一条。
例子2、GDP增长问题
某省2016年的GDP是6.7万亿元,如果每年按7%的比例增长,问多少年以后此省的GDP超过15万亿?
【算法分析】
假设n年后此省的GDP超过15万亿元,根据题意得出数学关系式?求最小的n。【参考程序】
Dim p As Single ‘ p用于记录GDP的值
Dim r As Single ‘ r用于记录GDP的年增长比例
Dim n As Integer ‘用于统计年数
p=6.7
r=0.07
n=0
Do while ____________
p=p*(1+r)
n=n+1
Loop
Print n_”年后,GDP的值超过15万亿元。”
根据上述回答下列问题:(共6分,每空3分)
(1)本题采用的算法是__________(填写:解析法/枚举法/排序法/递归法)。
(2)写出程序中空白处表达式____________________________
(1)解析法(2)p<=15
4.2 穷举法
穷举法也称为枚举法,这种算法是把问题设计的可能情况一一罗列出来,并且根据题目的条件和实际背景逐个做出判断,从中挑选出符合条件的解答。
例子1、勾股数
勾股数是指满足条件a2+b2=c2的自然数,求出100以内满足a
【算法分析】
a的取值范围[1,100];
b的取值范围[1,100];
c的取值范围[1,100].
【参考程序】
Dim a As Integer,b As Integer,c As Integer
For a=1 To 100
For b=1 To 100
For c=1 To 100
If _________________Then
Print a;b;c ‘abc之间以分号分隔
End If
Next c
Next b
Next
(1)本题采用的算法是___________(填写:解析法/枚举法/排序法/递归法)。
(2)程序代码中空白处应填写的条件是_____________(填写字母:A/B/C/D)A、a
C、a
D、a
(1)枚举法(2)C
使用穷举法时,要恰当地设计变量,并且决定用哪些变量作为搜索的主线,以便穷举出所有可能的情况。穷举一般使用循环结构,要注意循环的起点和终点,对可能的情况不能遗漏,一般也不应重复。编制程序时,还应当根据题目要求准确地写出是否符合条件的判断语句。
例子2、换钱问题
要将一张100元的钞票,换成等值的5元、2元、1元一张的钞票共50张。其中一种换发如下:
5元:3张2元:38张1元:9张求出所有的换钱方案。
【算法设计】
x表示5元的张数:1≤x≤20;
y表示2元的张数:1≤y≤50;
z表示1元的张数:1≤z≤100.
【参考程序】
Dim x As Integer,y As Integer,z As Integer
For x=1 To 20
For y=1 To 50
For z=1 To 100
If _____________________Then
Print x;y;z ‘x y z 之间以分号分隔
End if
Next z
Next y
Next x
根据上述回答下列问题:(8分,每空4分)
(1)本题采用的算法是_________________(填:解析法/枚举法/排序法/递归法)。(2)程序代码中空白处应填写的条件是______(填写字母:A/B/C/D)。
A、5x + 2y + z=100 Or x + y + z = 50
B、5x + 2y + z=100 And x + y + z = 50
C、5*x + 2*y + z=100 Or x + y + z = 50
D、5*x + 2*y + z=100 And x + y + z = 50
(1)枚举法(2)D
解析法和枚举法最大的区别是:枚举法会舍弃一些不符合题意的数据。比如枚举法计算能被3整除的数,从1开始一直枚举,1和2都不符合题意,都舍去,保留符合题意的