我有一个奇怪的情况,我试图根据他们的位置对足球运动员进行排序。
我们说我有10个玩家,我需要根据他们的位置对它们进行排序:
John | Position 1
Bill | Position 1
Gael | Position 2
Phil | Position 2
Joao | Position 2
Cale | Position 3
Bruu | Position 4
Aron | Position 5
Jimm | Position 5
Carl | Position 5
我需要尽可能地将它们排序,在这种情况下:
第1队 - John,Gael,Cale,Jimm,Carl
第2组 - 比尔,菲尔,若昂,布鲁,阿隆我开始尝试分割位置,然后在一个或另一个团队中对它们进行排序,但它没有按预期工作,因为有时我只有一个位置上的玩家和另一个位置上的3个。
答案 0 :(得分:0)
似乎唯一合理的做法是,如果你在每个位置都没有足够的玩家,那就是按位置对玩家进行排序,然后浏览列表,将下一个玩家分配给下一个团队。也就是说,根据您的列表和两个团队,您可以编写执行此操作的代码:
John | Position 1 | Team 1
Bill | Position 1 | Team 2
Gael | Position 2 | Team 1
Phil | Position 2 | Team 2
Joao | Position 2 | Team 1
Cale | Position 3 | Team 2
Bruu | Position 4 | Team 1
Aron | Position 5 | Team 2
Jimm | Position 5 | Team 1
Carl | Position 5 | Team 2
代码非常简单:
int numTeams = 2
int team = 0
for each player
{
Assign player to teams[team]
team = team + 1
if (team == numTeams) then
{
team = 0
}
}
如果您有其他限制,例如团队理想情况下具有x个位置y,那么算法会稍微改变以适应这些限制。但在我提出建议之前,你必须向我提供更多信息。