У меня есть набор неуникальных чисел, и я хотел бы разбить эти числа на K
разделов так, чтобы сумма чисел в каждом разделе была почти равна.
Предположим, у меня есть следующий набор.
{1, 2, 3, 4, 5, 6, 7, 8, 9}
Использование Алгоритм линейного разбиения Я получаю следующие разделы, когда K = 3
{ 1 2 3 4 5 }
{ 6 7 }
{ 8 9 }
Что и ожидается, но, поскольку это алгоритм линейного разделения, любое изменение порядка входного набора также изменит разделы, чего я хочу избежать.
Разница суммы элементов для каждого раздела должна быть минимизирована. В приведенном выше примере сумма каждого раздела составляет 15
, 13
, 17
для следующего ввода не работает.
{10, 20, 90, 100, 200}
Алгоритм линейного разбиения дает мне следующее
{ 10 20 90 100 }
{ 200 }
Но правильный ответ должен быть
{ 10, 200 }
{ 20, 90, 100 }