0

我在我的一个项目中遇到了一些问题,我希望你们能澄清一下这个问题。

情况是这样的;我有一组 12 人分为 4 组。这是一系列 3 轮比赛中的初始阵容。

我的问题是这个;我怎样才能在接下来的两轮中重新渲染这些组,以便之前没有见过的组中的人?

我希望重新渲染的组是唯一的,例如。在接下来的两轮中,第 1 人不得与第 2 人或第 3 人组队。如果第 1 人在第二轮中与第 4 人和第 5 人组队,则这些人也应在最后一轮中被排除在外。

第 1 组

第 1 人,第 2 人,第 3 人

第 2 组

第 4 人、第 5 人、第 6 人

第 3 组

第 7 人,第 8 人,第 9 人

第 4 组

10 人,11 人,12 人

4

2 回答 2

1

尝试这个:

for (i = 0 to NrGroups-1) do // NrGroups = 4
{
   newGroup + (i+1) = Arr[i] + 
                      Arr[(i+(Arr.length/NrPersonsInGroup))%Arr.length] + 
                      Arr[(i+(Arr.length/NrPersonsInGroup+1))%Arr.length]; // NrPersonsInGroup = 3
}
于 2013-01-07T06:16:33.630 回答
1

听起来你需要一个组合算法。有关性能等组合的更多详细信息,请在此处查看,对于带有解释的代码示例,您可以在此处查看
您的具体实现是 12 人组合,一次取 3 个,不重复。这为您提供了 220 个可能的组。
检查相同的两个人以前是否曾在一个组中的一种方法是保留已形成的组的记录,并根据记录检查任何新组,以查看被比较的两个组是否有任何两个共同的人。

于 2013-01-07T21:51:21.620 回答