题目:一辆汽车加满油后可行驶n km,旅途中有若干加油站。请设计一个算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。
我的思路是用贪心算法也就是先判断加油站之间的距离大不大于汽车加满油能行驶的距离,超出了就直接返回无法到达,当满足上述判断后进入下一步,汽车每到一个加油站就判断油是否够到达下一个加油站,够的话就不加油,如果不够就停下加油。
不多比比。代码贴下面
public static int jy(int k, int n, int[] arr) {
//k汽车加满油能行驶的距离 n加油站的个数 arr每个加油站的间隔距离
int flag=0;
int l=k;
for (int i = 0; i < arr.length-1; i++) {
if(arr[i]>k){
//判断加油站之间的距离大不大于汽车加满油能行驶的距离
System.out.println("到不了,没油了");
break;
}
//判断油是否够到达下一个加油站,够的话就不加油,如果不够就停下加油
if((k-arr[i])<arr[i+1]){
flag++;//加油的次数
k=l;
}
else {
k-=arr[i];
}
}
return flag;
}
测试一下
public static void main(String[] args) {
int[] arr={1,2,3,4,5,1,6,4,7,7,7,7,7,7};
int k=7;
int n=7;
int jy = jy(k, n, arr);
System.out.println(jy);
}
运行结果如下: