网易互娱笔试第三题
网易互娱笔试第三题喝咖啡,做了快两个小时一直是0%,各位看看哪里逻辑错了?第四题看了题意觉得做不出来就交了
import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//T组测试样例
int T = sc.nextInt();
int[] res = new int[T];
while (T > 0) {
T--;
int k = sc.nextInt();
int m = sc.nextInt();
int[] gameDay = new int[m];
for (int i = 0; i < m; i++) {
gameDay[i] = sc.nextInt();
}
int maxCoffeeDay = maxCoffeeDay(k, gameDay);
res[T] = maxCoffeeDay;
}
for (int i = res.length - 1; i >= 0; i--) {
System.out.println(res[i]);
}
sc.close();
}
/**
* 喝咖啡最多的天数
* @param k
* @param gameDays
* @return */
private static int maxCoffeeDay(int k, int[] gameDays) {
if (gameDays == null || gameDays.length == 0 || k == 0) {
return 30 / (k+1);
}
int maxDays = 0;
// 统计第一个游戏日期之前能喝咖啡多少天
if (gameDays[0] % (k+1) == 0) {
maxDays += (gameDays[0] / (k+1)) - 1;
} else {
maxDays += (gameDays[0] / (k+1));
}
// 统计最后一个游戏日期之后还能喝几杯
maxDays += (30-gameDays[gameDays.length-1]) / (k+1);
//将游戏第一天加入
maxDays++;
for (int i = 1; i < gameDays.length; i++) {
int curVal = gameDays[i];
// 统计当前游戏日期与上一个游戏日期之间能喝多少杯
int pre = gameDays[i-1];
int cur = curVal;
int curCount = (cur - pre) / (k + 1) - 1;
maxDays += curCount;
// 游戏日期也要喝一杯
maxDays++;
}
return maxDays;
}
}
查看18道真题和解析