Java 单消元竞赛算法

Java 单消元竞赛算法,java,algorithm,tournament,Java,Algorithm,Tournament,我是这个领域的新手,我想做一个Java应用程序,实现单一淘汰赛技术,让我导入球员姓名和他们的俱乐部,让应用程序(通过算法)为我创建一个单一淘汰赛括号,其中包含基于特定标准的球员姓名,比如:两名来自同一俱乐部的球员不能相互比赛,或者两名曾经获得过冠军的球员不能相互比赛……等等 不管怎样,我怎样才能开始这样一个算法呢?忽略两名曾经获得过冠军的球员的问题,只考虑俱乐部,这就是我的建议。首先,添加另一个名为BYE的俱乐部,该俱乐部有足够的球员{bye0,bye1,…},这样,对于一些n的球员,总人数为2

我是这个领域的新手,我想做一个Java应用程序,实现单一淘汰赛技术,让我导入球员姓名和他们的俱乐部,让应用程序(通过算法)为我创建一个单一淘汰赛括号,其中包含基于特定标准的球员姓名,比如:两名来自同一俱乐部的球员不能相互比赛,或者两名曾经获得过冠军的球员不能相互比赛……等等


不管怎样,我怎样才能开始这样一个算法呢?

忽略两名曾经获得过冠军的球员的问题,只考虑俱乐部,这就是我的建议。首先,添加另一个名为BYE的俱乐部,该俱乐部有足够的球员{bye0,bye1,…},这样,对于一些n的球员,总人数为2^n。(2表示n=1,4表示n=2,8表示n=3,16表示n=4,…)

我们从一棵树的根开始,向下n个级别,构建锦标赛等级。从根本上说,我们有我们所有的球员。要向下移动一个关卡,一半的玩家必须向左移动,一半的玩家必须向右移动。尝试在该阶段将每个俱乐部一分为二,使俱乐部0中的一半球员向左移动,俱乐部0中的另一半球员向右移动。你必须处理的唯一复杂问题是奇数,但由于奇数大小的球杆必须是偶数,所以奇数出局的人可以交替向左和向右


以这种方式在树上递归地继续下去。最后,你应该在尽可能统一的等级中的最低等级中有一个球员和“是”的分布。

忽略关于两名曾获得过冠军的球员的问题,仅仅考虑俱乐部,这就是我的建议。首先,添加另一个名为BYE的俱乐部,该俱乐部有足够的球员{bye0,bye1,…},这样,对于一些n的球员,总人数为2^n。(2表示n=1,4表示n=2,8表示n=3,16表示n=4,…)

我们从一棵树的根开始,向下n个级别,构建锦标赛等级。从根本上说,我们有我们所有的球员。要向下移动一个关卡,一半的玩家必须向左移动,一半的玩家必须向右移动。尝试在该阶段将每个俱乐部一分为二,使俱乐部0中的一半球员向左移动,俱乐部0中的另一半球员向右移动。你必须处理的唯一复杂问题是奇数,但由于奇数大小的球杆必须是偶数,所以奇数出局的人可以交替向左和向右


以这种方式在树上递归地继续下去。最后,你应该在尽可能统一的等级中的最低等级中有一个球员和是的分布。

这些标准必须保持多久?如果他们只需要保持在最低水平的支架,那么你只需要安排它,使没有两个球员从同一个俱乐部是紧挨着对方。如果您希望您的标准至少适用于两个级别的等级,那么来自同一俱乐部的球员不能属于同一组四人({0,1,2,3}或{4,5,6,7}或…)。此外,如果您的标准自相矛盾,会发生什么情况?举个简单的例子,如果超过一半的球员来自同一个俱乐部,你不能避免同一俱乐部的两名球员在一级比赛中相互对抗。这些标准必须维持多久?如果他们只需要保持在最低水平的支架,那么你只需要安排它,使没有两个球员从同一个俱乐部是紧挨着对方。如果您希望您的标准至少适用于两个级别的等级,那么来自同一俱乐部的球员不能属于同一组四人({0,1,2,3}或{4,5,6,7}或…)。此外,如果您的标准自相矛盾,会发生什么情况?举个简单的例子,如果超过一半的球员来自同一个俱乐部,你不能避免同一俱乐部的两名球员在一级比赛中相互对抗。这些标准必须维持多久?如果他们只需要保持在最低水平的支架,那么你只需要安排它,使没有两个球员从同一个俱乐部是紧挨着对方。如果您希望您的标准至少适用于两个级别的等级,那么来自同一俱乐部的球员不能属于同一组四人({0,1,2,3}或{4,5,6,7}或…)。此外,如果您的标准自相矛盾,会发生什么情况?举个简单的例子,如果超过一半的球员来自同一个俱乐部,你就无法避免同一俱乐部的两名球员在一级比赛中相互对抗。