1

我是这个领域的新手,我想做一个 Java 应用程序来实现单场淘汰赛的技术,它可以让我导入球员姓名和他们的俱乐部,并让应用程序(通过算法)为我创建一个单场淘汰赛括号基于特定标准的球员姓名,例如:来自同一俱乐部的两名球员不能互相比赛或两名赢得过往届冠军的球员不能互相比赛......等等

无论如何,我怎样才能开始这样的算法?

4

1 回答 1

0

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

我们通过从树的根向下 n 级构建锦标赛支架。从根本上说,我们拥有所有的玩家。要向下移动一个级别,一半的玩家必须向左走,一半的玩家必须向右走。尝试在那个阶段将每个俱乐部分成两半,使俱乐部 0 中的一半球员向左,俱乐部 0 中的另一半球员向右。唯一需要处理的问题是奇数,但由于奇数球杆的数量必须是偶数,奇数人出局可以交替向左和向右移动。

以这种方式继续递归地沿着树向下。最后,您应该在括号的最低级别尽可能统一地分配球员和轮空。

于 2015-06-02T18:35:01.477 回答