面试题:火车运煤问题

    技术2022-05-20  42

    面试题:火车运煤问题

     

    来源: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


    最新回复(0)