實現汽車加油問題

2021-08-19 21:19:00 字數 854 閱讀 4214

一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應

在哪些加油站停靠加油,使沿途加油次數最少。對於給定的n(n <= 5000)和k(k <= 1000)個加油站位置,程式設計計算最少加油次數。並證明演算法能產生乙個最優解。

要求:輸入:第一行有2個正整數n和k,表示汽車加滿油後可行駛n公里,且旅途中有k個加油站。接下來的1 行中,有k+1 個整數,表示第k個加油站與第k-1 個加油站之間的距離。第0 個加油站表示出發地,汽車已加滿油。第k+1 個加油站表示目的地。

輸出:輸出程式設計計算出的最少加油次數。如果無法到達目的地,則輸出」nosolution」。

思路:根據貪心演算法的選擇性質為了要使加油次數最少就會選擇離加滿油的點遠一點的加油站加油。要使加油次數最少,應在每一次汽車中剩下的油不能再行駛到下一站的時候在該站加油。每一次加滿油之後與起點具有相同條件,可以看做乙個全新的起點。

#include #include using namespace std;

int greedy(vectorx, int n)

return sum;

}int main(){

int n, k;

cin >> n >> k;

vectorx(k+1);

for(int i = 0; i < x.size(); i++)

cin >> x[i];

int z = greedy(x, n);

if(z != -1)

cout << z 輸入示例:

汽車加油問題

time limit 1000ms memory limit 65536k 有疑問?點這裡 一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。對於給定的n和k個加油站位置,計算最少加油次數。輸入資料的...

汽車加油問題

汽車加油問題 一輛汽車加滿油後可以行駛n公里,旅途中有加油站,設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。測試用例 7 7 n k 1 2 34 5 1 6 6 第k個加油站與第k 1個加油站之間的距離,其中第乙個代表起點,最後乙個代表終點。輸出 4 最少加油次數 解 汽車加...

汽車加油問題

汽車加油問題 一輛汽車加滿油後可以行駛n千公尺。旅途中有k個加油站。若要使沿途的加油次數最少,設計乙個有效的演算法,指出應在那些加油站停靠加油。資料輸入 由檔案input.txt 給出輸入資料。第一行有2個正整數n和k,表示汽車加滿油後可行駛nkm,且旅途中有k個加油站。接下來1行中,有k 1個整數...