用解析法和穷举法设计程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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都不符合题意,都舍去,保留符合题意的