汽车加油问题
一辆汽车加满油后可以行驶n公里,旅途中有加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
测试用例:
7 7 (n k)
1 2 34 5 1 6 6(第k个加油站与第k-1个加油站之间的距离,其中第一个代表起点,最后一个代表终点。)
输出:
4(最少加油次数)
解:
汽车加油问题:
直接进行模拟
对加油站间的距离进行逐个扫描,s代表当前能走的距离
尽量选择往远处走,当 s<a[i] 的时候代表当前不能到达下一个加油站,需要进行加油
此时 count++ 此时 s 变为 n ,到达下一加油站,减去 a[i]
#include <stdio.h>
int main()
{
int n,k;
int a[100];
int count = 0;
scanf("%d %d",&n,&k);
for(int i=0;i<k+1;i++)
{
scanf("%d",&a[i]);
}
int s=n;
for(i=0;i<k+1;i++){
if(s<a[i]){
count++;
s=n;
}
s-=a[i];
}
printf("%d\n",count);
return 0;
}