Algoritmo para equilibrar itens de tamanho variável em conjuntos aproximadamente equilibrados
Estou procurando um algoritmo para dividir uma lista de itens de tamanhos variados em um número "N" de grupos de tamanhos semelhantes.
Especificamente, estou trabalhando em um site ASP.NET em C # onde tenho uma lista de seqüências de caracteres (recuperada pelo banco de dados). As strings têm comprimentos variados. Eu tenho um conjunto de colunas que precisam exibir as strings. Eu preciso de um algoritmo que encontre os conjuntos mais equilibrados (a ordem dos itens é irrelevante) para permitir que as colunas finais sejam o mais equilibradas possível.
Exemplo resumido:Criando 3 colunas.
Itens a serem distribuídos:
- Item A - height 5
- Item B - height 3
- Item C - height 7
- Item D - height 2
- Item E - height 3
Saída desejada:
Column 1: Item A, Item D
Column 2: Item C
Column 3: Item B, Item E