百钱买百鸡是一个中国古代的经典数学问题。问题描述为:今有鸡翁一,值钱五;鸡母一,值钱三;小鸡三,值钱一。凡百钱买鸡百只,问鸡翁、鸡母、小鸡各几何?
算法设计(自然语言)
①假设鸡翁x只,鸡母y只,小鸡z只;
②x=1,y=1,z=1;
③判断x+y+z=100和5x+3y+z/3=100的条件是否同时成立,如果成立转到④,否则转到⑤;
④输出x,y,z的值,这是本题的一个解,继续执行⑤;
⑤当z<=300时,z的值增加1,转到③继续判断,否则转到⑥;
⑥当y<=33时,y的值增加1,z=1,转到③继续判断,否则转到⑦;
⑦当x<=20时,x的值增加1,y=1,z=1,转到③继续判断,否则转到⑧;
⑧算法结束。
算法设计(VB代码)
For x = 1 To 20 '鸡翁只数可能的取值范围
For y = 1 To 33 '鸡母只数可能的取值范围
For z = 1 To 300 '小鸡只数可能的取值范围
If x + y + z = 100 and 5 * x + 3 * y + z / 3=100 Then
Print x, y, z '输出一组解
End If
Next z
Next y
Next x
请计算第③步条件判断的次数。如果要减少条件判断次数,可以如何修改算法(可以选择自然语言或VB代码进行修改)?
一道VB算法优化的题目,求解!
答案:2 悬赏:20
解决时间 2021-01-05 01:45
- 提问者网友:芷芹
- 2021-01-04 02:57
最佳答案
- 二级知识专家网友:零负荷的放任
- 2021-01-04 03:45
这个优化的话 可以通过减少循环来进行的
将循环的次数进行优化
把 If x + y + z = 100 and 5 * x + 3 * y + z / 3=100 Then
修改为If5 * x + 3 * y + z / 3=100 Then
把For z = 1 To 300
修改为For z = 1 To 100-x-y
将循环的次数进行优化
把 If x + y + z = 100 and 5 * x + 3 * y + z / 3=100 Then
修改为If5 * x + 3 * y + z / 3=100 Then
把For z = 1 To 300
修改为For z = 1 To 100-x-y
全部回答
- 1楼网友:深街酒徒
- 2021-01-04 04:50
你好!
你是来骗经验的?
如有疑问,请追问。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯