я завершил задание которого функция требуется:Рекурсивного бен не будет масштабироваться
- Рекурсивного решение
- Емкость < = 100
- values.length < = 25
- только параметры мощность и индекс
- Допускается повторение значений
Я потратил несколько часов на изучение проблем с упаковкой и рюкзаком.
Следующие работы, но очень неэффективны. Я получаю переполнение стека с дюжиной значений. Очень неэффективно, не масштабируется, и я не знаю с чего начать.
Предложения были бы весьма признательны. Да, это академическое задание, но я предпочел бы избавиться от проблем, чем просто дать и заработать B.
public void calculateCombinations(int capacity, int index) {
count++;
if(index < values.length) {
if(values[index] <= capacity) {
currentSolution.addLast(index);
if(values[index] == capacity)
flushSolution();
else
capacity -= values[index];
}
calculateCombinations(capacity, index + 1);
} else
if(currentSolution.peekLast() != null)
calculateCombinations(capacity + values[currentSolution.peekLast()], currentSolution.removeLast() + 1);
}
Я бы предложил прочитать о динамическом программировании и воспоминаниях – yurib