我正在尝试编写一种算法,根据他们的“分数”创建人群。 一个人有两个参数,一个名字和一个分数。 (分数的范围在 -10 到 10 之间,但这真的不相关)我正在寻找创建人数相等的小组(如果可能的话,根据出现的人数),其中小组成员的平均分数是相同(或非常接近)。
例如:
第 1 组(平均得分 = 2) -- John Doe,得分 2 -- Jane Doe,得分 7 -- jack ·布莱克,得分 -3
第 2 组(平均得分 = 2) -- Bobby Flay,得分 4 -- 卡里·佩奇,得分 -3 -- Linus Tarval,得分 5
最佳答案
这闻起来像经典的变体 Partition Problem ,尽管存在一些启发式方法,但它是 NP-Hard。您可以在维基百科页面上找到战利品。可能贪婪的方法适用于您的情况。
您应该尝试通过选择合适的组来放置特定的人来填充您的组,可以从按分数排序开始。
关于C#算法根据值确定人员分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348509/