背景:多人团队游戏。
问题:每个球员都有一个1到5的星级,这是根据他们的球员统计数据计算的。我希望找到一种算法,以最公平的方式分配团队给这些球员。
有两支球队,每队最多有5名队员。
假设有6个玩家加入了服务器。服务器最好像这样分配团队:
VS
..as反对这样做
VS
在第一个例子中,每个团队总共有11颗星星,而在第二个例子中,一个团队总共有14颗星星,而另一个团队有8颗星星。
抱歉,我不能再简洁了。
发布于 2012-01-21 09:56:32
你就不能把所有球员的平均分数平均下来,然后为平均得分与所有球员的平均分数最接近的每支球队选出三个吗?
您可以为每支球队选择正确的球员,方法是将最高的两名球员分配给不同的球队,然后平均其余四个数字的排列,并选择一个最能平衡团队的。
我相信会有一个更基于逻辑的解决方案,以获得最后两名成员的团队以及。
发布于 2012-01-21 10:19:40
首先,把所有的星星加在一起,除以2。将你的玩家列表按他们拥有的星星数排序。接下来,把最好的球员加到一队,第二名,第二名,第三名,第一队,以此类推。这将带来好的结果,但他们可能远远不是完美的。例如,如果你有5,1,1,1名明星球员。这将导致5,1对1,1。
现在你可以计算出两支球队之间的差距,并从两支球队中挑选出一些球员来交换他们。你可以从强队中挑选出最强的球员,从另一支球队中挑选出一名实力较弱的球员,这样交换他们就能得到完美的团队。如果这是不可能的,从强队中挑选一个比强者少一颗星的球员,然后尝试做同样的动作等等。
但是,如果你给每支球队分配了不同的球员数量,你应该小心,因为每个球员都是一个独立的代理人,能够同时行动。添加一个“一人多明星”可以在这里有所帮助。但不知道你的游戏,我不能告诉你更多关于这件事。
发布于 2012-01-21 10:25:43
检查一下:http://www.stanford.edu/class/cme305/References/approx.pdf或者您可以尝试100种随机分组播放器的方法,并保留最好的解决方案。如果你有不到20名玩家,你甚至可以检查每一个可能的配置(2^20)。
https://stackoverflow.com/questions/8951996
复制相似问题