Предложение Цвайтерлинде проверить упаковка бина - это путь.
Я пошел дальше и опубликовал это, осознав, что это неправильно после того, как я все это напечатал.
Вам нужен жадный подход, при котором сначала используются самые большие числа.
- сортировка списка для получения порядка
- Начните размещать наибольшие числа в группы - столько, сколько потребуется для достижения первого числа
- Останов, когда достигнуто максимальное количество групп
- Сортируйте группы по сумме и повторите, добавив наибольшее число к наименьшей группе, повторяя до завершения.
Это должно дать вам:
от 2,2,3,4,4 ...
group 1 (4): 4
group 2 (6): 4, 2
group 3 (5): 3, 2
и от 7,7,8,8,8,9,9,10 ...
group 1 (18): 10, 8
group 2 (24): 9, 8, 7
group 3 (24): 9, 8, 7
Хотя я предполагаю, что второй пример может быть сделан как 19, 24, 23, что делает это неправильно. Хммм.