火车运煤问题(马车运草)问题

作为煤老板,面对3000吨煤和只能装1000吨煤且每公里耗煤1吨的火车,如何解决1000公里的运输问题?通过分析,发现需要在途中设立中转站,通过多次往返实现煤炭的最大化运输。最终解决方案是进行3次运输,每次在中转站调整使得火车始终保持满载,从而达到最大运输量。
摘要由CSDN通过智能技术生成

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

这道题一开始看上去好像是无解的,因为你的火车每一公里就要消耗一吨煤,而到目的地有1000公里,而火车最多只能装1000吨媒。如果你的火车可以全部装下,到目的地也会被全部烧光,一丁点也不剩。所以,很多人的第一反应都是觉得这个不太可能。

如果你一开始就觉得不太可能的话,这是很正常的。不过我不知道你还会不会继续思考下去,如果你不想思考下去了,那么我很为你担忧,因为你可能并不是一个不善于思考的人,而是一个畏难的人,还有可能是一个容易放弃的人。这对于你做好 一个需要大量思考的工作的程序员来说可能并不适合。

看完上面一段话,就想靠自己思考得出结论,结果昨晚上想着想着睡着了,然后今天就继续进行思考。哎,说来惭愧,想了好久也没有找出最佳答案。最后只有上网求助。看了好多答案也没看明白。最后终于想到了一个我能理解的解释,现在严重怀疑自己适不适合做程序员。

解决思路:
因为要运送最多的煤到集市,所以要把所有的煤都给运走。火车运送的上限是1000吨,所以需要运送3000/1000 = 3 次。前两次的运送肯定不是运送到终点,而是把煤放到一个中间点,然后最后一次进行运送时把所有的煤运到终点。如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值