题目
有一个商人骑着一头驴去1000公里外的集市卖萝卜,商人有3000个萝卜,但是驴最多只能带1000个萝卜,而且驴每走一公里要吃掉一根萝卜,请问商人最多能卖多少根萝卜。
分析
- 萝卜很多
- 驴的负载有限
思路
思路就是,假设在一根萝卜都不浪费的情况下(没有剩下一根萝卜还留在原地),消耗一千个萝卜,最多能前进多远?
假设商人带着萝卜前进X公里,由于驴每次只能搬运1000根萝卜,那么3000根萝卜至少搬运三个来回,一共消耗5X萝卜:
- 起点出发,带1000根萝卜,剩余2000根萝卜,走X,剩下1000-X根萝卜
- 放下1000-2*X根萝卜,带X根萝卜回到起点,又消耗X根萝卜
- 起点出发,带1000根萝卜,剩余1000根萝卜,走X,剩下1000-X根萝卜
- 放下1000-2X根萝卜(现在有2000-4X根萝卜),带X根萝卜回到起点,又消耗X根萝卜
- 起点出发,带1000根萝卜,剩余0根萝卜,走X,剩下1000-X根萝卜
- 放下1000-X根萝卜,一共有3000-5X根萝卜
那么按照我们的思路,消耗一千根萝卜,最多走:
X = 1000 / 5 = 200公里
由于消耗了1000根萝卜,此时情况变了,剩余2000根萝卜时,想要前进Y公里,驴只需要来回两趟,一共消耗3Y根萝卜,具体推导和上面差不多,可以计算得到:
Y = 1000 / 3 = 333公里
最后只剩下1000根萝卜了,商人和驴也前进了 533公里(200 + 333),剩下467公里,走完即可。
最后商人可卖533根萝卜。
一个变态的思路
带三头驴上路,当消耗到1000根萝卜时,杀掉一头驴,此时前进距离X:
X = 1000 / 3 = 333公里
再消耗1000根萝卜时,再杀掉一头驴,此时前进距离Y:
Y = 1000 / 2 =500公里
剩下1000公里走完,剩余833根萝卜。
(题目说的是一头驴,明显偏题了)
多说一点
这是我想到的最优解,如果有更好的解法,可以探讨一下。