首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次淘汰竞赛算法

一次淘汰竞赛算法
EN

Stack Overflow用户
提问于 2015-06-03 00:19:26
回答 1查看 1.9K关注 0票数 1

我是这个领域的新手,我想做一个Java应用程序来实现Single Elimination锦标赛的技术,它将让我导入球员的名字和他们的俱乐部,并让应用程序(通过一个算法)为我创建一个带有基于特定标准的球员名称的单一淘汰赛分类,例如:来自同一俱乐部的两名球员不能相互比赛,或者两名以前赢得过冠军的球员不能与每个other....etc比赛

不管怎样,我该如何启动这样的算法呢?

EN

回答 1

Stack Overflow用户

发布于 2015-06-03 02:35:01

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

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

继续以这种方式向下递归遍历整个树。最后,你应该在支架的最低层有一个球员和告别的分布,这是尽可能均匀的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30601377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档