problem description
一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計乙個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。並證明演算法能產生乙個最優解。
對於給定的n和k個加油站位置,計算最少加油次數。
input
輸入資料的第一行有2 個正整數n和k(n≤5000,k≤1000),表示汽車加滿油後可行駛n公里,且旅途中有k個加油站。接下來的1 行中,有k+1 個整數,表示第k個加油站與第k-1 個加油站之間的距離。第0 個加油站表示出發地,汽車已加滿油。第k+1 個加油站表示目的地。
output
將計算出的最少加油次數輸出。如果無法到達目的地,則輸出「no solution!」。
sample input
7 7sample output1 2 3 4 5 1 6 6
4hint
source
思路:首先我們要判斷每個加油站之間的距離判斷是否超過加滿油後可行駛的距離,若超過則不可到達;若每個都不超過我們開始計算加油的最少次數,首先用變數sum計算可行駛的路程,若超過加滿油後可行駛的距離n我們就要加油啦,這裡採用的方法是在k位置加油站的時候加上距k+1位置的加油站之間的距離,如果超過n,那我們就要在k位置加油,這樣才能到達k+1位置,如果不超過n,那麼我們可以到達k+1位置的車站,然後就去k+1位置的車站繼續判斷。
#include using namespace std;
int main()
flag = 1;
i = 1;
while(flag == 1 && i < k+1)
if(a[i] > n || a[i +1] >n)
i++;
}if(flag)
cout
cout<<"no solution!";
return 0;
}
汽車加油問題
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個整數...