Ну, если это «дробный рюкзак» (то есть вы можете взять дроби предметов), то это легко:
Предметы (как цена, вес пары) [(10, 3), (7, 2), (12, 4), (13, 3), (6, 13), (20, 8)]
Интуитивно вы захотите сначала получить предмет, который обеспечит большую ценус меньшим весом.Итак, давайте отсортируем элементы по их соотношению цены и веса:
[(13, 3), (7, 2), (10, 3), (12, 4), (20, 8),(6, 13)]
Теперь, пока у вас не закончится емкость или предмет, возьмите как можно больше самого ценного предмета.
0. cap = 15, price = 0
1. Take (13, 3): cap = 12, price = 13
2. Take (7, 2): cap = 10, price = 20
3. Take (10, 3): cap = 7, price = 30
4. Take (12, 4): cap = 3, price = 42
5. Take (20, 8): cap = 0, price = 49.5
[in this step, you have capacity to take 3 units, so take 3 units of the 5th item, the price of which is 3*20/8]
Если вы не можете взять дробные предметытогда такой жадный подход может не дать вам оптимального решения.