猴子搬香蕉问题的思考

猴子要搬香蕉回家,每走一米都要吃一个香蕉,猴子可搬动50个香蕉一次,离家50米,现在一共有100个香蕉,问共可以拿到家多少个香蕉

 

当它有超过50个时,搬50个走一米把剩下的放下再回头搬其它的过来,每走一米要吃到3个香蕉

。。。

当它只有不到50个香蕉时就不用回头,直接搬着香蕉,走着吃着回去即可

 

如果承重为N,剩余香蕉为T,当T > N时,把香蕉搬1米要消耗 2*(T/N) - 1(如果搬过T/N次之后,只剩下2个或者1个香蕉了,那就要看这猴子是比较馋还是比较懒了,馋就回头吃一个把剩下两个香蕉拿上再吃一个放地上一个等于没回去,懒就拿上香蕉直接走)

。。。

当T <= N时拿上香蕉直接走

 

代码都已经写出来了,突然发现,如何验证算法正确性呢,这种办法是拿到最多香蕉的方法吗?

感觉这代码效率很差,有什么办法改进下最好!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值