一辆汽车加满油后可以行驶n公里,旅途中有加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
测试用例:
7 7 (n k)
1 2 3 4 5 1 6 6(第k个加油站与第k-1个加油站之间的距离,其中第一个代表起点,最后一个代表终点。)
输出: 4(最少加油次数)
#include <stdio.h>
#define n 7 //汽车加满油后可以行驶n公里
#define k 7 //加油站的个数
int main(){
int a[n+1]={1,2,3,4,5,1,6,6}; //相邻加油站之间的距离
int count=0; //加油次数
int start=0; //初始距离
for(int i=0; i<=k; i++)
{
start+=a[i];
if(start>n) //如果行驶距离大于汽车可以行驶的最大距离
{
count++; //必须加油一次
start=a[i]; //起始距离等于当前两个加油站之间的距离
}
}
printf("%d\n",count);
return 0;
}