我正在制作一个匹配客户端,将 10 人匹配成两个团队:
每个人选择他们想玩的四个人,从高到低排列。
然后从该集合中最强大的关系中形成两个团队。
您将如何创建解决此问题的算法?
例子:
Given players [a, b, c, d, e, f, g, h, i, j], '->' meaning a preference pick.
a -> b (weight: 4)
a -> c (weight: 3)
a -> d (weight: 2)
a -> e (weight: 1)
b -> d (weight: 4)
b -> h (weight: 3)
b -> a (weight: 2)
...and so on
这个问题表面上看起来很简单(毕竟它只是一个牵线搭桥的客户端),但想了想,似乎需要考虑到相当多的关系。
编辑(从评论中粘贴):理想情况下,我会避免使用蛮力方法扩展到需要 100 名玩家和 25 支球队的大型游戏,其中选择你喜欢的队友将通过搜索功能完成。我知道这个系统可能不是最好的 - 但是,这是一个有趣的问题,我想在学习的同时找到一个有效的解决方案。