эта проблема включает в себя попытку подгонки предметов различных грузов в сумку, чтобы сумка заканчивалась указанным общим весом или самым близким к общему указанному весу.Это похоже на рюкзак или алгоритм изменения?
Пример 1: - мешок может содержать максимум до 240 кг веса
Item1- 60кг, 30кг Item2-, Item3- 55кг, 60кг Item4-, Item5- 80кг, 40кг Item6- , Item7- 7кг,
Здесь выбранный элемент должен быть Элемент1, Item4, Item5 и Item6 (60 + 60 + 80 + 40 = 240 кг)
Пример 2: - мешок может содержать максимум до 180 кг веса
Item1- 60кг, 30кг Item2-, Item3- 55кг, 30кг Item4-, Item5- 70кг, 48кг Item6-
Здесь выбранный элемент должен быть Элемент1, Item4, Item5 и Item6 (60 + 70 + 48 = 178 кг)
, который находится ближе всего к 180 кг
Вот мой метод шаблон
public List getSelectedItems(List<Presentation> inputList, int knapsackCapacity){
List selectItems;
// optimized algorith which returns selectItems and inputList containing the
//left out items i.e which are not selected;
return selectItems;
}
Некоторые люди по сети я называю т Простейшая форма Knapsack problem как это не имеет никакого benifit/прибыль, связанную с ним, и некоторые называют это Change-making problem
Независимо от категории он приходит под я не мог получить алгоритм для этого, и, следовательно, не в состоянии сделать программу Java из него. Любая помощь здесь?
рюкзак - твердый. если вы можете «оптимизировать» его решение, вы должны получить хотя бы ничтожную цену. вероятно, также убийство из нескольких агентств-шпионов ... – hop
@hop есть псевдополиномиальное решение http://en.wikipedia.org/wiki/Knapsack_problem#Dynamic_programming – imreal
@hop Вы хотите сказать, что рекурсия - единственный способ пойти на этот момент времени, пока кто-нибудь придумает лучшее решение? –