問題描述:一輛汽車加滿油后可行駛nkm。旅途中有若干加油站。設計一個有效算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。
算法設計:對於給定的n和k個加油站位置,計算最少加油次數。
數據輸入:n:表示汽車加滿油后可行駛nkm
k:旅途中有k個加油站
k+1個整數:表示第k個加油站與第k-1個加油站之間的距離。第0個加油站表示出發地,汽車已加滿油。第k+1個加油站表示目的地。
數據輸出:最少加油次數和具體在哪幾個加油站加油。
例如: n=7 k=7
K+1個整數:1 2 3 4 5 1 6 6
最優值:4
問題分析:把距離相加,判斷是否大於n,如果大於n,計數一次
#include <iostream> using namespace std; int main() { int n,k; cout<<"輸入n,k"<<endl; cin>>n>>k; int a[100]; cout<<"輸入距離"<<endl; for(int i=1;i<=k+1;i++) { cin>>a[i]; } int count=0; int sum=0; for(int i=1;i<=k+1;i++) { sum+=a[i]; if(sum>=n) { sum=a[i]; count++; cout<<"======="<<endl; cout<<"第"<<count <<"次加油的位置:"<<a[i-1]<<endl; } } cout << "總共加油:"<<count<<"次"<< endl; return 0; }