汽车加油问题--贪心算法
问题描述:一辆汽车加满油后可行驶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; }