Algoritmo para equilibrar elementos de tamaño variable en conjuntos más o menos equilibrados.

Estoy buscando un algoritmo para dividir una lista de elementos de diferentes tamaños en el número "N" de grupos de tamaño similar.

Específicamente, estoy trabajando en un sitio ASP.NET en C # donde tengo una lista (recuperada de la base de datos) de cadenas. Las cuerdas son de diferentes longitudes. Tengo un conjunto de columnas que necesitan mostrar las cadenas. Necesito un algoritmo que encuentre los conjuntos más equilibrados (el orden de los elementos es irrelevante) para permitir que las columnas finales estén lo más equilibradas posible.

Ejemplo resumido:

Creando 3 columnas.

Artículos para distribuir:

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

Salida deseada:

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta