前言
博主刷的华为机考题,代码仅供参考,因为没有后台数据,可能有没考虑到的情况
如果感觉对你有帮助,请点点关注点点赞吧,谢谢你!
题目描述

输入
6
1 -1 -6 7 -17 7
2
输出
14
思路
1.动态规划:score[i]=max(score[i-1]~score[i-k])+score[i]
2.打印score[i-1]
代码
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
int[] score = new int[n];
for (int i = 0; i < n; i++) {
score[i] = sc.nextInt();
}
sc.nextLine();
int k=sc.nextInt();
sc.close();
for (int i = 1; i < n; i++) {
int max=Integer.MIN_VALUE;
for (int j = i-1; j>=i-k&&j>=0; j--) {
max=Math.max(max,score[j]);
}
score[i]+=max;
}
System.out.println(score[n-1]);
}
}