贪心算法解决汽车加油
问题描述
一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
输入
第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第k+1 个加油站表示目的地。
#include<bits/stdc++.h>
using namespace std;
int a[10],n,k,sum,N,b[10];
int judge(int n,int j){
if(n>=a[j])return 1;
else return 0;
}
int main()
{
cin>>n>>k;N=n; //储存n
for(int i=0;i<k+1;i++)
cin>>a[i];
for(int i=0;i<k+1;i++){
if(n<a[i])
{
cout<<"No arrive";
break;
}
n-=a[i];
if(judge(n,i+1))
continue;
else{
sum++;
n=N;
b[sum]=i+1;
}
}
cout<<sum<<endl;
cout<<"在那几个加油站加过油:";
for(int i=1;i<=sum;i++)
cout<<b[i]<<" ";
}