Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

火车运煤问题

$
0
0

火车运煤问题


你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市?


以下我自己的答案,请使劲往下找:





































首先假设火车每走X公里就返回在拉剩下的煤,起始时X<500,按照如下方式运煤:

将煤分为三份,基本平均即可,每份最少>X,至少两份>2X,将三份命名为A1,A2,A3。

A1运送X公里后卸下A1-2X煤,然后返回

A2运送X公里后卸下A2-2X煤,然后返回

A3运送X公里后,路上消耗X煤

此时该地有煤A1+A2+A3-5X煤...

再走X公里时,需要消耗仍然是5X煤,如果走了Y次,即A1+A2+A3-5X*Y

令X*Y = Z,即3000-5Z

上面计算的情况是需要3车的,所以当变成2000的时候,需要改变计算方法。

即:3000-5Z = 2000 时,需要改变计算方法,此时Z = 200公里,也就是说走了200公里的时候肯定要消耗1000吨煤。


200公里后,就变成了两车。命名为B1,B2

B1运送X公里后卸下B1-2X煤,然后返回

B2运行X公里后消耗X煤

此时该地有煤B1+B2-3X煤,继续这么走Y次消耗是B1+B2-3XY,

领X*Y = Z,即2000-3Z

同样这么走下去之后总煤数会变成1000吨的时候,这个时候一车正好。

2000-3Z = 1000时,Z = 333.33...公里


此时已经经过200+333.33公里,剩余煤1000吨,剩余路程(1000-533.33)公里,需要消耗煤(1000-533.33)吨。

所以最后剩余为1000-(1000-533.33) = 533.33吨


最后,在不考虑其他情况的前提下,只要满足两个点,就符合最优解。

1.200公里处必须停车,在此处必须满足2000吨。

2.533.33公里处必须停车,此处必须满足1000吨。

如果不满足上述两条,那么总有一段路本来可以少一辆车,你却多了一辆车,因而导致耗煤增加。


卸车最少的情况下,第一次走200公里,第二次走333.33公里,第三次走完剩下路程。

作者:isea533 发表于2013-8-21 13:37:44 原文链接
阅读:38 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>