您当前的位置: 百科371电脑/网络其他编程 → 电脑/网络内容 退出登录 用户管理 用户注册
本类热门文章
相关文章
中原建材网
百钱买百鸡 程序

减小字体 增大字体

问题:百钱买百鸡 程序  

首先你有几点是错误的:
不管什么程序,如果循环198000次就根本承受不了,那就不要说自己是一个程序。也就是198000次的循环对于编程语言来说根本是小菜一碟。

理论上讲行得得通,其实就行得通,只不过你的程序有问题而已,循环的嵌套,内层初始值应在内层,一般不是定义在所有层的!

有一个问题你注意了没有?编程序不能一味地让计算机运算,如果所得的财数大于100时没有必要再计算了,所以要重置循环条件,重新循环,这样速度快些!例如:鸡翁已是18,鸡母已经是4,此时总钱数已经102了,还有必要对计算鸡雏吗?

另一个注脚就是题中的隐含条件,鸡雏一定是3的倍数,你信吗?那么鸡雏就应该是3为步进值而不是1!事实上鸡雏的循环最多也只有101次,考虑0的情况!但既是百钱买百鸡,鸡雏的个数绝不可能超过一百只!而且三者的总和是100!以上程序只要两个循环就够了!

rooster=0
DO
hen=0
DO
money = rooster*5 + hen*3 + (100-rooster-hen)/3
IF money = 100 THEN
PRINT rooster, hen, (100-rooster-hen)
END IF
if money >100 then
rooster=rooster+1
hen=0 //这儿让其重新循环开始。
end if
hen = hen+1
LOOP UNTIL hen>33
rooster = rooster+1
LOOP UNTIL rooster> 19
END

我不希望你说不懂,就已经给你拆开写了!当钱只要大于100时就重新更正循环条件!真正的也可以与一个条件完成!那是因为,if money=100 then 后money 以后就会大于100,不可能再发生匹配的情况,因为hen加1个,chicken去掉一个,钱数只会个应地减加。所以下一次循环就会进行if money >100,很明显。多计算了一次循环,与其这样,不如:
rooster=0
DO
hen=0
DO
money = rooster*5 + hen*3 + (100-rooster-hen)/3
IF money = 100 THEN
PRINT rooster, hen, (100-rooster-hen)
rooster=rooster+1
hen=0 //这儿让其重新循环开始。
END IF
hen = hen+1
LOOP UNTIL hen>33
rooster = rooster+1
LOOP UNTIL rooster> 19
END

比较一下,两者可实现的结果是一致的,但循环的次数要少一次,每次正确匹配结结果就少一次,总计会少20次!(如果是鸡雏与鸡母与鸡翁都不能为0时)此程序可将初始条件做一下更改!

如果你对百钱买百鸡 程序这个问题有好的意见或 建议,请留言
[] [返回上一页] [打 印]
电脑/网络评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

中原建材网 简单版 站长QQ:382546553