会编程的煤老板

会编程的煤老板

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

http://blog.csdn.net/yinghuashihun/article/details/6864967

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

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 。

http://blog.csdn.net/encienqi/article/details/6388293

另一种分析:

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

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

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

5X=10003(Y-X)=1000Z=1000-(1000-Y)=Y

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

个人认为类似这种题目并不需要很复杂的数学知识,而更多的是依赖于你的思考,能够很清楚的在脑海中理清前后之间的逻辑关系那样问题就会变得非常简单容易。

你可能感兴趣的:(一点小结,趣味题)