猴子要搬香蕉回家,每走一米都要吃一个香蕉,猴子可搬动50个香蕉一次,离家50米,现在一共有100个香蕉,问共可以拿到家多少个香蕉
当它有超过50个时,搬50个走一米把剩下的放下再回头搬其它的过来,每走一米要吃到3个香蕉
。。。
当它只有不到50个香蕉时就不用回头,直接搬着香蕉,走着吃着回去即可
如果承重为N,剩余香蕉为T,当T > N时,把香蕉搬1米要消耗 2*(T/N) - 1(如果搬过T/N次之后,只剩下2个或者1个香蕉了,那就要看这猴子是比较馋还是比较懒了,馋就回头吃一个把剩下两个香蕉拿上再吃一个放地上一个等于没回去,懒就拿上香蕉直接走)
。。。
当T <= N时拿上香蕉直接走
代码都已经写出来了,突然发现,如何验证算法正确性呢,这种办法是拿到最多香蕉的方法吗?
感觉这代码效率很差,有什么办法改进下最好!