Всем привет. Подскажите пожалуйста алгоритм лучше перебора для следующей задачи: есть ряд положительных чисел. Необходимо разбить его на заданное число групп. При разбиении каждой группе следует ассоциировать число равное сумме всех компонентов группы. Задача разбиения заключается в том, чтобы самая разница между самой маленькой суммой и самой большой суммой были минимальны
Пример.
Ряд чисел
1 10 12 13 1000
Число групп - 2
Правильный результат разбиения
Группа 1:
Компоненты: 1000
Сумма: 1000
Группа 2:
Компоненты: 1 10 12 13
Сумма: 1 + 10 +12 +13 = 36
Разница = 1000 - 36 => 964
Неправильный результат разбиения
Группа 1:
Компоненты: 1000 13
Сумма: 1013
Группа 2:
Компоненты: 1 10 12
Сумма: 1 + 10 +12 = 23
Разница = 1013 - 23 => 990 - больше чем 964
Пробовал монте карло - не очень качественно разбивает. К самой большой группе обычно что то лишнее добавляется