1. 程式人生 > >貪心演算法作業之汽車加油問題

貪心演算法作業之汽車加油問題

囉嗦幾句

好不容易寫到最後一個作業,感覺好沒意思,都是直接寫程式碼,這個關於貪心演算法,實在寫不下去了。但是,不知道寫什麼東西,湊個數。

問題描述

一輛汽車加滿油後可行駛n公里。旅途中有若干個加油站。設計一個有效演算法,指出應在哪些加油站停靠加油,使沿途加油次數最少。

程式碼如下

#include<iostream>
#include <vector>
using namespace std;
using std::vector;
double greedy(vector<int>x,int n)
{
int sum=0,k=x.size();
    for
(int j=0;j<k;j++) if(x[j]>n) { cout<<"No solution!"<<endl; return -1; } int s=0; for (int i=0;i<k;i++) { s+=x[i]; if(s>n) { sum++; s=x[i]; } } return sum; } int main() { int
i,k,n; int a; int t; vector<int>x; cout<<"請輸入加油站數目:"<<endl; cin>>k; cout<<"請輸入汽車加滿油可行駛最遠距離:"<<endl; cin>>n; cout<<"請輸入加油站之間的距離:"<<endl; for(i=1;i<=k+1;i++) { cin>>a; x.push_back(a); } t=greedy(x,n); cout
<<"最少加油次數是:"<<t<<endl; return 0; }