題目描述

你是山西的一個煤老板,你在礦區開采了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手里有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大——每一公里需要耗一噸煤。請問,作為一個懂編程的煤老板的你,你會怎么運送才能運最多的煤到集市?

這個問題其實是大家想得復雜了,我沒看答案,我自己覺得這個題很簡單

首先假設最后剩下N噸煤,那么N一定會小于1000,為什么呢,留你自己考慮(隨著你看下文,你也會想到為什么)
最后一段運輸一定是無往返的,這樣才會使得消耗最小,假設最后一段路長為M1距離,那么在最后一段運輸起點S1時剩煤N+M1
倒數第二段路,即S1前一段路M2(起點為S2),一定是運輸了兩次,也就是走了3*M2,在此段的起點剩煤N+M1+3*M2
倒數第三段路,即S2前一段路M3(起點為S3),一定是運輸了三次,也就是走了5*M3,在此段的起點剩煤N+M1+3*M2+5M3
……
所以起點零處3000=N+M1+3*M2+5M3+7M4+……
很明顯運輸過程中每一段路來回趟數越少消費越少,從出發點開始,第一段路應該是運輸了3次(3000/1000=3)
故3000=N+M1+3*M2+5M3
總距離1000=M1+M2+M3
第二段路起點處,必然不能大于2000噸,按照來回趟數最少消耗最少的觀點,那么第一趟5倍消耗路程應該消耗了1000(3000-2000)噸煤,即距離是1000/5=200公里
同理,第三段路起點處,必然不能大于1000噸,所以第二段路長度為(2000-1000)/3=333.333
最后一段路長為1000-200-333.333=466.666
所以總的剩余即最大可運輸到目的地的煤為(最后一段起點的煤1000噸-最后一段路消耗)1000-466.666=533.333