1`完全背包


问题以及总结



java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T=in.nextInt();
while(T-->0){
int n =in.nextInt();
int m=in.nextInt();//背包容量
int[] w=new int[n];//体积
int[] v=new int[n]; //价值
for(int i=0;i<n;i++){
w[i]=in.nextInt();
v[i]=in.nextInt();
}
//用来计算在容量为j时的最大值--这里的最大值就是一直变化的最终最大值
int[] dp=new int[m+1];
//dp[j] = max( 不装 , 装 )
for(int i=0;i<n;i++){
for(int j=w[i];j<=m;j++){
dp[j]=Math.max(dp[j],dp[j-w[i]]+v[i]);
}
}
// 输出容量为m时的最大价值
System.out.println(dp[m]);
}
}
}