单一消除锦标赛算法

时间:2015-06-02 16:19:26

标签: java algorithm tournament

我是这个领域的新手,我想做一个Java应用程序,实现单一消除锦标赛的技术,让我导入玩家名称和他们的俱乐部,并让应用程序(通过算法)为我创建一个消除根据特定标准的球员名称的比赛支架,例如:来自同一俱乐部的两名球员不能互相比赛或者两名曾赢得过冠军的球员不能互相比赛....等等

无论如何我怎么能开始这样的算法呢?

1 个答案:

答案 0 :(得分:0)

忽略了两位曾赢得过冠军的球员的问题,并且只是考虑俱乐部,这就是我的建议。首先,添加另一个名为BYE的俱乐部,其中有足够的球员{bye0,bye1,...},以便某些球员的总数为2 ^ n。 (2给出n = 1,4,n给出n = 2,n给出n = 3,16给出n = 4,......)。

我们通过从树的根部向下工作来构建锦标赛支架。从根本上说,我们拥有所有球员。要降低一个级别,一半球员必须离开,一半必须向右走。尝试在每个阶段将每个俱乐部分成两半,以便俱乐部0中的一半球员向左移动,另一半球员0中的球员向右移动。你将不得不处理的唯一复杂因素是奇数,但由于必须有偶数个奇数级别的俱乐部,所以奇怪的人可以交替出现在左边和右边。

以这种方式递归地递归树。最后,您应该在括号的最低级别分配玩家和助理,尽可能统一。