問題描述
一輛汽車加滿油後可行駛
nkm 。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。
程式設計任務
對於給定的n和k
個加油站位置,程式設計計算最少加油次數。
資料輸入
第1行有
2個正整數n和
k,表示汽車加滿油後可行駛
nkm,且旅途有
k個加油站。接下來的一行中,有
k+1個整數,表示第
k個加油站與第
k-1個加油站之間的距離。第
0個加油站表示出發地,汽車已加滿油。第
k+1個加油站表示目的地。
結果輸出
計算出的最少加油次數。如果無法到達目的地,則輸出
」no solution
」。演算法實現
假設x[i]表示
i-1到
i號加油站之間的距離,每一次都是加滿油再出發,根據貪心演算法的選擇性質為了要使加油次數最少就會選擇離加滿油的點遠一點的加油站加油。另外當加滿油之後,都要是此後的過程中使加油次數最少。每一次汽車中剩下的油不能再行駛到下一站就在該站加油
.每一次加滿油之後與起點具有相同的條件,可以看做乙個新的起點,過程也是相同的。所以說加油次數最少也具有最優子結構的性質。
**實現:
//汽車加油
#includeusing namespace std;
int main()
for(int i=0;i<=k;i++)
if(s-a[i]>=0)
else
}cout樣例:
汽車加油問題(貪心演算法)
汽車加油問題 time limit 1000 ms memory limit 65536 kib problem description 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n...
汽車加油問題(貪心演算法)
汽車加油問題 time limit 1000 ms memory limit 65536 kib problem description 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n...
貪心演算法之汽車加油問題
場景 一 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。應在哪些加油站停靠加油,使沿途加油次數最少。汽車行駛過程中,不到萬不得已不加油,應走到自己能走到並且離自己最遠的那個加油站,在那個站加滿油後,將那個加油站作為新的起點,再按照同樣的方法遞迴下去。場景 二 在乙個固定長度的路線上,有多個加油...