煤老板运煤的问题

来源:互联网 发布:微软办公自动化软件 编辑:程序博客网 时间:2024/04/29 04:26

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

 这是一个求最优解的问题。

  1、每次走的路程应该满足下面的条件:假设中间某个位置为A,去的时候到达A时,能够装上A点上次卸下的煤,保证车载1000t不变, 返回时经过A点时,车载的煤为0,装上A点一定数量的煤,能够正常返回。

 

  3000t煤,肯定是需要三次运送的, 假设起点为A, 终点为B,从A点起运,到达中间位置C, AC之间的距离为X , 卸下(1000-2x) t的煤,然后回到A点。

  第二次起运,装载1000t,到达C时 ,车上剩余(1000-x) t ,在C点装上X t,车载达到1000t ,C点剩余(1000-2x -x),继续起运,到达位置D, D位置只需要第三次运送的时候经过一次,第三次运送完,不会再返回了,所以 D位置卸载煤为(1000/3) t,CD之间的距离为1000/3。然后回到C,此时的车载量为0,从C位置装上X t然后回到A ,此时C点剩余煤(1000-2x -x -x )t。

     第三次起运装上1000t,A的没有煤了,走到C点,装上X t  , 此时车载为1000t , C点的剩余(1000-2x-x-x-x) t, 车不会再回到C点了,所以此时的C的煤的数量为0。 则x=200 , 车继续走,到D时装上 1000/3 t ,车载为1000t , D点没有剩余,走到B位置,运送到B位置煤的数量是 1000-(1000-200-1000/3)= 200+333+1/3 。

原创粉丝点击