煤火车问题
煤火車問題
- 剛面試問到這個題。可惜一直沒有為此類問題準備,差點就回答出來了
題目內容
- 你是山西的一個煤老板。你在礦區(qū)開採了有3000噸煤須要運送到市場上去賣。從你的礦區(qū)到市場有1000公里。你手里有一列燒煤的火車。這個火車最多僅僅能裝1000噸煤,且其能耗比較大——每一公里須要耗一噸煤。請問,作為一個懂編程的煤老板的你,你會怎么運送才干運最多的煤到集市?
分析
- 非常顯然每次走全程的話是無法到達終點的,更別說剩余部分煤。必定把煤所有運到中間某點,然后再繼續(xù)運
- 假設第一次把煤所有運輸到中間某點A,距離為x,那么消耗的煤的數量為5x。由于要往返兩次,再單程一次把剩下的1000噸運往A點。
- 假設A點剩余煤量3000-5x大于2000,那么下一次假設從A運輸到B,距離為y,消耗的煤的數量相同是5y。
- 假設A點剩余煤量小于2000。那么從A到B僅僅需往返一次,再單程一次,消耗煤的數量為3y。
- 由此可見,從一點到另外一點距離為s。中途不折返,假設初始煤量在3000~2000之間,須要消耗5s噸煤
- 同理得到,s距離不折返初始煤量在2000~1000之間,須要消耗3s噸煤
- s距離不折返初始煤量在1000~0之間,須要消耗s噸煤
- 那么終于的策略為每次選擇單位消耗最小的方式運輸。第一次消耗5x,第二次消耗3y,第三次消耗z。滿足第一次消耗之后剩余2000噸,第二次消耗之后剩余1000噸
結果
- x=200。
轉為單位消耗3的方式運輸。y=333。轉為單位消耗1的方式運輸。z=(1000-x-y)= 467。
剩余533噸煤
- 假設換一種思路,要求n1000噸煤最多能夠運輸多遠,那么有n=1時為10001,n=2時為1000(1+1/3)。
繼續(xù)下去得到傳輸距離為1000
(1+1/3+1/5+...+1/(2*n-1))。級數不收斂,表明僅僅要煤足夠多。能用運輸到足夠遠
轉載請注明作者:Focustc,博客地址為http://blog.csdn.net/caozhk,原文鏈接為點擊打開
轉載于:https://www.cnblogs.com/blfshiye/p/4562627.html
總結
- 上一篇: Oracle基本概念与数据导入
- 下一篇: hdu 3339 In Action 背