Problem
Given n kind of items with size Ai and value Vi( each item has an infinite number available) and a backpack with size m.
What's the maximum value can you put into the backpack?
Example
Given 4 items with size [2, 3, 5, 7] and value [1, 5, 2, 4], and a backpack with size 10. The maximum value is 15.
思路
和backpack II类似
能重复使用
public int backPackIII(int[] A, int[] V, int m) {
if (A == null || V == null || A.length != V.length || A.length == 0) {
return 0;
}
int n = A.length;
int[][] dp = new int[n + 1][m + 1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
dp[i][j] = dp[i - 1][j];
if (j >= A[i - 1]) {
dp[i][j] = Math.max(dp[i][j], dp[i][j - A[i - 1]] + V[i - 1]);
}
}
}
return dp[n][m];
}