/*
8 8
3 9 3 6 5 4 2 7 2
*/
#include <stdio.h>
#include <stdlib.h>
int main(int argc,const char *argv[])
{
int N;
int K;
int *arr;
int i;
int add = 0;
int cnt = 0;
int can = 1;
scanf("%d %d",&N,&K);
//申请 K+1 个 int 类型的储存空间
arr = (int *)malloc((K + 1)*sizeof(int));
//遍历并初始化数组
for(i=0;i<K+1;i++)
{
scanf("%d",&arr[i]);
}
//遍历数组
for(i=0;i<K+1;i++)
{
//如果两个加油站的距离大于
//车辆加满油能行走的最远距离
if(arr[i]>N)
{
//车辆不能到达目的地
can = 0;
//循环结束
break;
}
add+=arr[i];
if(add>N)//如果加油后行走的距离大于车辆极限
{
i--;//则在上一站就该加油
cnt++;//加油次数加1
add=0;//加油后行距离数赋值为0
}
}
//将申请到的内存释放
free(arr);
if(can)//如果能到达
printf("%d",cnt);
else
printf("No Solution");
return 0;
}
1019汽车加油
最新推荐文章于 2022-11-14 21:18:55 发布