达格洛普:vb高手帮帮忙

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 09:00:43
如果要将一元人民币换成零钱(换成1分,2分,5分),共有多少种换发?
怎么编啊

你的问题就是解一个三元一次不定方程:x+2y+5z=100(并且x,y,z的值为正整数)

初步:
dim i as integer
i=0
for x=1 to 100
for y=1 to 100
for z=1 to 100
if x+2y+5z=100 then
i=i+1
end if
next z
next y
next x
print "共有" & i & "种换法"

进一步分析,0<x<=100,0<y<=50,0<z<=20的整数
dim i as integer
i=0
for z=1 to 20
for y=1 to 50
for x=1 to 100
if x+2y+5z=100 then
i=i+1
end if
next x
next y
next z
print "共有" & i & "种换法"

还可以再进一步研究,因为x,y,z的值在逐步增大,所以你在执行的时候,当发现x+2y+5z>100之后就跳出当前循环,执行另一层循环。
比如,在方法2中,你发现当x=50的时候,x+2y+5z>100,这个时候,还有必要再执行x=51或是之后的值的吗?

dim i as integer
dim x ,y, z as integer
i=0
for z=1 to 20
for y=1 to 50
for x=1 to 100
if x+2y+5z=100 then
i=i+1
end if
next x
next y
next z
print "共有" & i & "种换法"

高,分析的透彻,进一步分析,0<x<=100,0<y<=50,0<z<=20的整数 ,这才是一个极限条件