好不容易写到最后一个作业,感觉好没意思,都是直接写代码,这个关于贪心算法,实在写不下去了。但是,不知道写什么东西,凑个数。
一辆汽车加满油后可行驶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;
- }