AcWing 4. 多重背包问题 I - Java
原题链接
简单
作者:
hiboy
,
2020-08-04 10:48:22
,
所有人可见
,
阅读 626
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int V = in.nextInt();
int[] v = new int[N+1];
int[] w = new int[N+1];
int[] s = new int[N+1];
for(int i = 1; i <= N; i++){
v[i] = in.nextInt();
w[i] = in.nextInt();
s[i] = in.nextInt();
}
System.out.println(dp(N, V, v, w, s));
}
public static int dp(int N, int V, int[] v, int[] w, int[] s){
int[] dp = new int[V+1];
dp[0] = 0;
for(int i = 1; i <= N; i++){
for(int j = V; j >= 1; j--){
for(int k = 1; k <= s[i] && k <= j/v[i]; k++)
dp[j] = Math.max(dp[j], dp[j - k*v[i]] + k*w[i]);
}
}
return dp[V];
}
}