一辆汽车加满油后可以行驶n公里,旅途中有加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。
接下来的1 行中,有k+1 个整数,表示每段之间的距离。
输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。
接下来的1 行中,有k+1 个整数,表示每段之间的距离。
输出:输出编程计算出的最少加油次数。如果无法到达目的地,则输出”NoSolution”。
#include<stdio.h>
void func(int *len,int n,int k)
{
int num=0;//加油次数
int s=0;//不停止的路段长度
for(int i=0;i<=k;i++)
if(n<len[i])
{
printf("NoSolution\n");
return;
}
for(int j=0;j<=k;j++){
s+=len[j];
if(s>n)
{
num++;
s=len[j];
printf("%d个",j);
}
}
printf(",最少%d站.\n",num);
}
int main()
{
int n,k;
int *len;
scanf("%d%d",&n,&k);
len = new int[k+1];
for(int i=0;i<=k;i++)
scanf("%d",&len[i]);
printf("停靠的加油站分别是第");
func(len,n,k);
return 0;
}