关于coolshell博客中的火车运煤问题的想法
刚看到陈皓博客上有一个关于火车运煤的面试题,趁着现在还没到上班点,就想了一下,具体题目如下:你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?
这个问题初考虑的话,看似无解,不过稍加思考,不难得出还是有方法的,最容易想到的是运500吨到集市,也就是陈皓给出的第一个答案
[*]装1000吨煤,走250公里,扔下500吨煤,回矿山。
[*]装1000吨煤,走到250公里处,拿起250吨煤继续向前到500公里处,扔下500吨煤,回矿山。此时火车上还有250吨,再加上在250公里处还有250吨煤,所以,火车是可以回矿山的。
[*]装上最后1000吨煤,走到500公里处,装上那里的500吨煤,然后一直走到目的。
然后我又想了一下,要想使得运最多的煤过去,那么应该是把矿场的煤全部运完,而且每次回矿场需要满载,这样的话使得回矿场的次数最少,从而使得耗费在路途上煤最少,那么也就是可以得出从矿场装煤的次数应该是
页:
[1]