我正在尝试找到最小背包问题的解决方案(利润最少的一组项目,使所选项目的总重量至少为容量C。)
我正在尝试修改以下最大背包问题以获得最小版本但没有成功。
有人可以帮忙解决这个问题吗?
public class UnboundedKnapSack {
public static int fillTable(int capacity, int[] weight, int[] value) {
int i, j;
int[][] maxValue = new int[value.length][capacity + 1];
for (j = 0; j < weight[0]; j++) {
maxValue[0][j] = 0;
}
for (j = 0; j <= capacity; j++) {
maxValue[0][j] = value[0] * (j / weight[0]);
}
for (i = 1; i < value.length; i++) {
for (j = 0; j < weight[i]; j++) {
maxValue[i][j] = maxValue[i - 1][j];
}
for (j = weight[i]; j <= capacity; j++) {
maxValue[i][j] = Math.max(maxValue[i - 1][j], value[i] + maxValue[i][j - weight[i]]);
}
}
return maxValue[value.length - 1][capacity];
}
}