最少加油数
问题:
一辆加满油的汽车欲行驶到m公里外的终点,旅途中有若干加油站,并且每个加油站距离起点的公里数已知,汽车加满油后可行驶n公里。如何用最少的加油次数到达目的地。
输入格式:
第一行输入终点公里数m,和汽车加满油可行驶的公里数n,以及加油站的个数k。第二行输入k个整数分别代表从起点到终点的k个加油站距离起点的公里数。
输出格式:
输出最少的加油次数。
输入样例:
在这里给出一组输入。例如:
10 6 3
2 5 9
输出样例:
在这里给出相应的输出。例如:
1
代码实现:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
int k = scan.nextInt();
int[] kn = new int[k+1];
kn[k] = m;
for (int i = 0; i < k; i++) {
kn[i] = scan.nextInt();
}
int walked = 0;
int res = 0;
if (n >= m) {
System.out.println(0);
return;
}
for (int i = 0; i < k+1; i++) {
if (n>kn[k]) break;
while (n>=kn[i]){
i++;
}
walked += kn[i-1];
res++;
for (int j = i; j < k+1; j++) {
kn[j] = kn[j]-walked;
}
}
System.out.println(res);
}
}