华为OD机试真题 - 跳格子3
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int steps = Integer.parseInt(scanner.nextLine());
int[] nums = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int k = Integer.parseInt(scanner.nextLine());
calculateMaxScoreSum(steps, nums, k);
}
public static int calculateMaxScoreSum(int steps, int[] nums, int k) {
int[] dp = new int[steps];
dp[0] = nums[0];
for (int i = 1; i < dp.length; i++) {
int max = Integer.MIN_VALUE;
for (int j = 1; j <= k; j++) {
if (i - j >= 0)
max = Math.max(max, nums[i - j]);
}
dp[i] = nums[i] + max;
}
return dp[steps - 1];
}
Scanner scanner = new Scanner(System.in);
int steps = Integer.parseInt(scanner.nextLine());
int[] nums = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int k = Integer.parseInt(scanner.nextLine());
calculateMaxScoreSum(steps, nums, k);
}
public static int calculateMaxScoreSum(int steps, int[] nums, int k) {
int[] dp = new int[steps];
dp[0] = nums[0];
for (int i = 1; i < dp.length; i++) {
int max = Integer.MIN_VALUE;
for (int j = 1; j <= k; j++) {
if (i - j >= 0)
max = Math.max(max, nums[i - j]);
}
dp[i] = nums[i] + max;
}
return dp[steps - 1];
}
全部评论
相关推荐