貪心演算法之汽車加油問題

2021-07-14 17:05:44 字數 806 閱讀 7439

場景

一、一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。應在哪些加油站停靠加油,使沿途加油次數最少

汽車行駛過程中,不到萬不得已不加油,應走到自己能走到並且離自己最遠的那個加油站,在那個站加滿油後,將那個加油站作為新的起點,再按照同樣的方法遞迴下去。 場景

二、在乙個固定長度的路線上,有多個加油站,而且各個加油站的油價不總是相同,現讓油箱為空的一輛車行駛完這條路線,怎樣能使所花費的油錢最少。

汽車到乙個加油站,可能有以下幾種狀態:

1.油箱中還有油,這是已經花出去的錢,無法改變,所以要充分利用這些油,看看能不能在油花完之前找到更低價的站。如果有比當前站更低價的,就開過去;否則,只能在當前站加油。

2.如果在當前站加油,加多少才最省錢呢?顯然,加得越少越好,如果不用把油箱加滿就可以找到比當前站更低價的站,那就是最好情況,即找到滿油箱可到達範圍之內的最近的乙個比當前站低價的站,加了相應的油之後開過去,到達時正好把油花完,這樣**油的用量最省。

3.如果滿油箱可到達範圍之內沒有比當前站低價的站,即在最大範圍內,當前站最低價,那麼當然是把最低價油加滿(相同距離最省錢),下一站應該去該範圍內的次低價站,這樣,就算下一站要加油,也是那時所以可能裡最低價的。

4.如果滿油箱可到達範圍之內都沒有加油站的話,即上述第2個問題,那麼無法到達終點,最遠行駛距離為當前站加上把滿油耗盡所能行駛的距離。

如果到達下一站,就重複上述判斷,這樣就能保證總是佔最大的便宜。總體思想就是,想盡一切辦法找最便宜的加油站,並使開到那一站時油正好花完,若當前站最便宜,就把油加滿接著找最便宜的站,這就是「貪心」的精髓。

汽車加油問題 貪心演算法

問題描述 一輛汽車加滿油後可行駛 nkm 旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。程式設計任務 對於給定的n和k 個加油站位置,程式設計計算最少加油次數。資料輸入 第1行有 2個正整數n和 k,表示汽車加滿油後可行駛 nkm,且旅途有 k個加油站。接...

汽車加油問題(貪心演算法)

汽車加油問題 time limit 1000 ms memory limit 65536 kib problem description 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n...

汽車加油問題(貪心演算法)

汽車加油問題 time limit 1000 ms memory limit 65536 kib problem description 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n...