有了前一题的基础,此题就很直接了。
前一题求重量,此题求的是价值,那么将重量换为价值即可。
但是看看下面的一个bug,阴沟翻船啊!!!!!!咋搞的。。。。写的时候不看code吗
/**
* @param m: An integer m denotes the size of a backpack
* @param A & V: Given n items with size A[i] and value V[i]
* @return: The maximum value
*/
public int backPackII(int m, int[] A, int V[]) {
// write your code here
if (m == 0 || A == null || A.length == 0) {
return 0;
}
int [][] matrix = new int[A.length + 1][m + 1];
for (int i = 0; i < A.length; i++) {
for (int j = 0; j <= m; j++) {
if (A[i] > j) {
//matrix[i + 1] = matrix[i][j];
matrix[i + 1][j] = matrix[i][j];
} else {
//matrix[i + 1] = Math.max(matrix[i][j], matrix[i][j - A[i]] + V[i]);
matrix[i + 1][j] = Math.max(matrix[i][j], matrix[i][j - A[i]] + V[i]);
}
}
}
return matrix[A.length][m];
}