火车运煤
今天闲的无聊,突然发现了一个比较经典的智力题,现在拿来跟大家分享一下啊!
题 目:你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多 只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?
这道题一开始看上去好像是无解的,因为你的火车每一公里就要消耗一吨煤,而到目的地有1000公里,而火车最多只能装1000吨媒。如果你的火车可以全部装下,到目的地也会被全部烧光,一丁点也不剩。所以,很多人的第一反应都是觉得这个不太可能。
如果你一开始就觉得不太可能的话,这是很正常的。不过我不知道你还会不会继续思考下去,如果你不想思考下去了,那么我很为你担忧,因为你可能并不是一个不
善于思考的人,而是一个畏难的人,还有可能是一个容易放弃的人。这对于你做好 一个需要大量思考的工作的程序员来说可能并不适合。
我一开始也觉得不可能,后来想了一想,想到一个解法可以最多运送500吨煤到市场,方法如下:
1、装1000吨煤,走250公里,扔下500吨煤,回矿山。
2、装1000吨煤,走到250公里处,拿起250吨煤继续向前到500公里处,扔下500吨煤,回矿山。此时火车上还有250吨,再加上在250公里处还有250吨煤,所以,火车是可以回矿山的。
3、装上最后1000吨煤,走到500公里处,装上那里的500吨煤,然后一直走到目的。于是,你最多可以运送500吨煤到市场(当然,火车也回不去了,因为那矿山没有煤了)
2、装1000吨煤,走到250公里处,拿起250吨煤继续向前到500公里处,扔下500吨煤,回矿山。此时火车上还有250吨,再加上在250公里处还有250吨煤,所以,火车是可以回矿山的。
3、装上最后1000吨煤,走到500公里处,装上那里的500吨煤,然后一直走到目的。于是,你最多可以运送500吨煤到市场(当然,火车也回不去了,因为那矿山没有煤了)
不过据说还有一个更好的方法能运更多的煤,这道题的最优解是533吨,你想到了吗?