题目描述:
已知一辆汽车加满油后可行驶d(如d=7)km,而旅途中有若干个加油站。编写一个实验程序指出应在哪些加油站停靠加油,使加油次数最少。用a数组存放加油站之间的距离,例如a[]={2,7,3,6},表示共有n=4个加油站(加油站编号是0~n-1),从起点到0号加油站的距离为2km,依次类推。
用例
输入:n=4 //加油站数量
d=6 //汽车加满油后可行驶的里程
a[]={2,7,3,6} //加油站之间的距离
输出:汽车不可能达到终点站! //0号和1号加油站间距大于汽车加满油可行驶里程
输入:n=4 //加油站数量
d=7 //汽车加满油后可行驶的里程
a[]={2,7,3,6} //加油站之间的距离
输出:3 //最小加油次数
代码实现:
#include<stdio.h>
#define scanf_s scanf
int main() {
int d = 0;
int n = 0;
scanf_s("%d", &n);
scanf_s("%d", &d);
int a[100] = { 0 };
for (size_t i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
int sum = 0;
int flag = 0;
for (size_t i = 0; i < n; i++)
{
if (a[i] > d) {
flag = -1;
break;
}
}
if (flag == -1) {
printf("汽车不可能达到终点站!");
}
else {
int sum = 0;
int oil = d;
for (size_t i = 0; i < n-1; i++)
{
oil -= a[i];
if (oil <= a[i+1]) {
oil = d;
sum++;
}
}
printf("%d", sum);
}
}