import java.util.*;
public class Main {
public static int max(int[]w,int[]v,int cap) {
int N= w.length;
int[][] t = new int[N+1][cap+1];
for(int i = 1;i < N+1;i++)
for(int j = 1;j < cap+1;j++) {
if(j<w[i-1])
t[i][j]=t[i-1][j-1];
else {
t[i][j] = Math.max(t[i-1][j], t[i-1][j-w[i-1]]+v[i-1]);
}
}
return t[N][cap];
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(scan.hasNext()) {
int N = scan.nextInt();
int cap = scan.nextInt();
int[] w = new int[N],v = new int[N];
for(int i = 0;i < N;i++)
w[i] = scan.nextInt();
for(int i = 0;i < N;i++)
v[i] = scan.nextInt();
System.out.println(max(w,v,cap));
}
}
bilibili给大家送好心情,给个第二题java代码,大家交流
#笔试题目#