面試題:火車運煤問題
你是山西的一個煤老闆,你在礦區開採了有3000噸煤需要運送到市場上去賣,從你的礦區到市場有1000公里,你手裡有一列燒煤的火車,這個火車最多隻能裝1000噸煤,且其能耗比較大——每一公里需要耗一噸煤。請問,作為一個懂程式設計的煤老闆的你,你會怎麼運送才能運最多的煤到集市?
答案:
裝1000噸煤,走250公里,扔下500噸煤,回礦山。 裝1000噸煤,走到250公里處,拿起250噸煤繼續向前到500公里處,扔下500噸煤,回礦山。此時火車上還有250噸,再加上在250公里處還有250噸煤,所以,火車是可以回礦山的。 裝上最後1000噸煤,走到500公里處,裝上那裡的500噸煤,然後一直走到目的。
於是,你最多可以運送500噸煤到市場(當然,火車也回不去了,因為那礦山沒有煤了)
533是應該是最優解
另一種分析:
分析:列車一次最多隻能運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
個人認為類似這種題目並不需要很複雜的數學知識,而更多的是依賴於你的思考,能夠很清楚的在腦海中理清前後之間的邏輯關係那樣問題就會變得非常簡單容易。
相關文章
- 後臺開發常問面試題集錦(問題搬運工,附連結)面試題
- 面試官常問的位運算問題總結面試
- 面試問題面試
- 華為面試題:購物車問題(01揹包演算法升級)面試題演算法
- 面試題:階乘問題面試題
- 【面試】面試題之汽水空瓶子問題面試題
- 面試反問問題面試
- Typescript 面試問題TypeScript面試
- Hive 面試問題Hive面試
- iOS 面試問題iOS面試
- java面試問題Java面試
- 詢問面試官的面試問題面試
- 如何運用triz理論解決車窗結霜問題?
- Linux系統運維面試題,Linux運維經典面試題講解Linux運維面試題
- JavaScript中揹包問題(面試題)JavaScript面試題
- 【面試】面試常見問題整理面試
- 40道 Redis 運維面試題Redis運維面試題
- Pig面試問題面試
- 面試問題總結面試
- SAP面試問題答案面試
- 昨天的面試問題面試
- 面試疑難問題面試
- cmake Makefile面試問題面試
- ACM中回車的問題ACM
- 前端面試常問問題前端面試
- 面試、筆試提問問題面試筆試
- 面試時,你會問面試官哪些問題?面試
- 高頻面試考題:荷蘭旗問題面試
- 華為優招面試題---迷宮問題面試題
- SQL崗位30個面試題,SQL面試問題及答案SQL面試題
- 機器學習面試問題彙總機器學習面試
- golang 面試常考問題Golang面試
- defer問題——面試Go必看面試Go
- Redis最常見面試問題Redis面試
- Apache Hive 面試問答題ApacheHive面試
- 大資料面試問題大資料面試
- SQL面試題,快問快答!SQL面試題
- PHP面試問題總結PHP面試