У меня проблема с алгоритмом «Рюкзак с множественным выбором». У меня есть код (внизу), который является обычным рюкзаком. Моя проблема в том, что я должен сделать массив таким же, как Integer.MAX_Value -1. Поэтому мне нужно изменить цикл for, чтобы получить способ создать массив с max_value, но при этом сохранить правильный алгоритм для рюкзака.
Я работал над этой проблемой 3 часа. Пожалуйста, помогите ...
public static int pack(final ItemGroup[] itemGroups, final int weight) {
if (weight<= 0 || itemGroups == null || itemGroups.length == 0) {
throw new IllegalArgumentException("Failure.");
}
int i, w = 0;
int[][] knapsack = new int[itemGroups.length + 1][weight+ 1];
for (int a = 0; a <= weight- 1; a++) {
knapsack[0][a] = 0;
}
for (i = 1; i <= itemGroups.length; i++) {
for (w = 0; w <= weight; w++) {
if (w >= 0) {
if (itemGroups[i - 1].getItems().get(0).getWeight() > w) {
knapsack[i][w] = knapsack[i - 1][w];
} else {
knapsack[i][w] = max(
itemGroups[i - 1].getItems().get(0).getProfit()
+ knapsack[i - 1][w - itemGroups[i - 1].getItems().get(0).getWeight()],
knapsack[i - 1][w]);
}
}
}
}
return knapsack[itemGroups.length][weight];
}
Заранее благодарим за ответ