貪心演算法作業之汽車加油問題
阿新 • • 發佈:2019-02-03
囉嗦幾句
好不容易寫到最後一個作業,感覺好沒意思,都是直接寫程式碼,這個關於貪心演算法,實在寫不下去了。但是,不知道寫什麼東西,湊個數。
問題描述
一輛汽車加滿油後可行駛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;
}