你是山西的乙個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裡有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大——每一公里需要耗一噸煤。請問,作為乙個懂程式設計的煤老闆的你,你會怎麼運送才能運最多的煤到集市?
首先想到最優解的兩個特徵:1,火車肯定要從起點出發3次(因為每次最多運1000);2,火車前兩次回到起點要用完車上存煤(否則是浪費)。
初步方案:火車前兩次都運到某點x,卸下1000-2x,然後用x煤回去,第三次到x點時,車上有1000-x,然後裝上x點的煤,若3000-5x不超過1000,直接到終點,用3000-5x=1000的臨界條件算得x=400,這也是火車到達終點所剩下的煤。
若3000-5x超過1000,此時與原問題類似,但初始煤變為3000-5x,路程變為1000-x,我們需要選擇下乙個存煤點,與x點距離y,然後在y點回頭一次。
然後想到第三個特徵:3,火車回程要盡可能短。使火車回頭的原因是火車容量為1000,理想狀況為火車每次出發都裝滿1000的煤,所以火車第三次到達x點時共有煤3000-5x=2000,求得x=200;火車第二次到達y點時站點有存煤1000-2y,火車有煤1000-y,共計2000-3y,理想狀況為2000-3y=1000,y=333,火車到達終點剩下煤1000-(1000-x-y)=533。
面試題 火車運煤問題
很有意思的東西 題目如下 你是山西的乙個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裡有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大 每一公里需要耗一噸煤。請問,作為乙個懂程式設計的煤老闆的你,你會怎麼運送才能運最多的煤到集市?這道...
面試題 火車運煤問題
面試題 火車運煤問題 你是山西的乙個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裡有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大 每一公里需要耗一噸煤。請問,作為乙個懂程式設計的煤老闆的你,你會怎麼運送才能運最多的煤到集市?答案一 ...
面試題 火車運煤問題
你是山西的乙個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裡有一列燒煤的火車,這個火車最多只能裝1000噸煤,且其能耗比較大 每一公里需要耗一噸煤。請問,作為乙個懂程式設計的煤老闆的你,你會怎麼運送才能運最多的煤到集市?答案 於是,你最多可以運送50...