汽車加油問題--貪心算法


問題描述:一輛汽車加滿油后可行駛nkm。旅途中有若干加油站。設計一個有效算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。

算法設計:對於給定的nk個加油站位置,計算最少加油次數。

數據輸入: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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM