我正在寻找一种算法,将不同大小的项目列表拆分为“N”个大小相似的组。
具体来说,我正在使用 C# 开发一个 ASP.NET 站点,其中有一个(数据库检索的)字符串列表。弦长短不一。我有一组需要显示字符串的列。我需要一种算法来找到最平衡的集合(项目顺序无关紧要)以使最终列尽可能平衡。
抽象示例:
创建 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
最佳答案
最快的方法可能就是将每个新项目插入到最小的列表中(其中“最小”是列表中所有项目的大小之和)。
关于c# - 将可变大小的项目平衡为大致平衡的集合的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3575086/