面试题:火车运煤问题

面试题:火车运煤问题

 

来源:http://www.xymyeah.com/165.html

 

 

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

 

答案一:

 

终点D,中间点C,中间点B,起点A。
首先为了满足火车运到某个中间点可以卸下一定量的煤并返回,应保证每次运输的距离小于500,这样起点和终点直接至少存在2个中间点。
为了减少煤的损耗,每次运输时应满载,故在C点应有1000吨煤,而为了让C点有1000吨煤,需要火车从B点到C点走3次(2次去,一次回)。而B点储存的煤应该是1000的2倍,所以从B运到C共损失1000吨煤,BC=1000/3;
为了使B点储存2000吨煤,需要从A点到B点往返5次(3次去,2次回),A点有3000吨煤,从A到B损失1000吨煤,则AB=1000/5;
AB=200;BC=333.33333;那么CD=1000-AB-BC=466.6666;
所以最终剩余1000-CD=533.3333吨煤

 

答案二:

分析:列车一次最多只能运1000吨煤,不难看出当剩余煤在(2000,3000]的时候至少需要运三次,在(1000,2000]的时候运两次,在(0,1000]的时候运一次。

为了减少列车往返的次数,根据上述区间所示,列车中途可设两个停靠点,且其存煤量最好为2000和1000。

计算:设第一个停靠点距起点X,第二个停靠点距起点Y,最终可运达市场煤Z

则5X=1000,3(Y-X)=1000,Z=1000-(1000-Y)=Y

解得:X=200,Z=Y=1600/3=533.33


来源:http://www.xymyeah.com/165.html

你可能感兴趣的:(面试题集)