很多人需要第二题的代码,我直接发评论区了,java写的。直接暴力递归就ac了,根本不需要改动态规划。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int M = in.nextInt();
int K = in.nextInt();
int[] km = new int[N];
int[] gold = new int[N];
for (int i = 0; i < N; i++) {
km[i] = in.nextInt();
gold[i] = in.nextInt();
}
int max = gold[0];
System.out.println(maxGold(N, M, K - 1, km, gold, max, 1,0));
}
public static int maxGold(int N, int M, int K, int[] km, int[] gold, int max, int gg,int start) {
if (gg == N || (km[gg]-start) > M || K < 0) {
return max;
}
int a = maxGold(N, M, K - 1, km, gold, gold[gg]+ max, gg + 1,km[gg]);
int b = maxGold(N, M, K, km, gold, max, gg + 1,start);
return Math.max(a,b);
}