會編程的煤老闆
你是山西的一個煤老闆,你在礦區開採了有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]的時候運一次。
爲了減少列車往返的次數,根據上述區間所示,列車中途可設兩個停靠點,且其存煤量最好爲2000和1000。
計算:設第一個停靠點距起點X,第二個停靠點距起點Y,最終可運達市場煤Z
則5X=1000,3(Y-X)=1000,Z=1000-(1000-Y)=Y
解得:X=200,Z=Y=1600/3=533.33
個人認爲類似這種題目並不需要很複雜的數學知識,而更多的是依賴於你的思考,能夠很清楚的在腦海中理清前後之間的邏輯關係那樣問題就會變得非常簡單容易。