Алгоритм балансирования предметов разных размеров в грубо сбалансированных наборах

Я ищу алгоритм, чтобы разбить список элементов разных размеров на число "N" групп одинакового размера.

В частности, я работаю над сайтом ASP.NET в C #, где у меня есть (извлеченный из базы данных) список строк. Струны имеют различную длину. У меня есть набор столбцов, которые должны отображать строки. Мне нужен алгоритм, который найдет наиболее сбалансированные наборы (порядок элементов не имеет значения), чтобы последние столбцы были максимально сбалансированы.

Абстрактный пример:

Создание 3 столбцов.

Предметы для распространения:

 - Item A - height 5
 - Item B - height 3
 - Item C - height 7
 - Item D - height 2
 - Item E - height 3

Желаемый вывод:

Column 1: Item A, Item D
Column 2: Item C
Column 3: Item B, Item E

Ответы на вопрос(6)

Ваш ответ на вопрос