gpt4 book ai didi

php - 生成单场淘汰赛

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:51 26 4
gpt4 key购买 nike

首先,对不起我的英语我会尽力解释我的问题!

所以,我正在尝试生成一个玩家数量不受限制的单场淘汰锦标赛。

现在我只是在考虑,我在纸上什么都没有,我想我不会有两个力量的锦标赛的问题(2 4 8 16 32 名球员..),我的想法卡在直接参加比赛的球员身上到第 2 轮,我不知道如何确定这个数字以及将它们放在哪里。

例如(有 59 名玩家) eg (with 59 players)

我认为有一个公式,但我找不到它,我有一些想法,但我认为在一个案例上太具体了,不知道它是否适用于另一个案例。

如果你能帮助我,谢谢你!

最佳答案

对于给定的数字 N,找出它与至少与 N 一样大的 2 的最小次方之间的差值。对于 59,则为 5 (64 - 59)。这 5 名选手将在第二轮比赛中加入比赛日程。

该算法允许所有玩家在第二轮开始时参与游戏 - 即尽早参与。它的解释很简单:想象一下,本来有2**N个玩家——但是有些人就是没有来参加他们的比赛,所以他们的对手不战而胜。 )

作为旁注,您的公式应该考虑到应该从第二轮开始进入游戏的是最强大的玩家,而不是最弱的玩家。 )


第一步显然是计算将参加第一轮的玩家人数。现在,让我们继续那个“缺少球员”的比喻——假设最初有 64 名球员,那么第一轮应该进行 32 场比赛。但是有 5 名选手 (64 - 59) 没有来参加那些比赛——所以真实比赛的人数是 27 ( 64/2 - 5 ),第一轮的真实参与者人数是 54 (27 * 2)。

第一轮结束后,锦标赛还剩下 27 人 - 其他 5 个人将加入这些人,所以第二轮的选手总数是 32 人。我想剩下的是微不足道的。 )

其实这很容易普及。假设我们有 N 个玩家,并且至少与 N 一样大的 2 的最小次方是 P。现在……

  • 第一轮应该有 (N - (P - N))(或只有 (2*N - P))位玩家。
  • 第一轮的游戏总数是(N - P/2)
  • 显然,进入第二轮的玩家人数相同。
  • 这些将由 (P - N) 在第一轮中没有上场的球员加入,所以第二轮的玩家总数将是...

N - P/2 + P - N => P - P/2 => P/2

  • ...从现在开始,您只需按照 2^N 名玩家的直接时间表进行(因为 P/2 和 P 都是 2 的幂)。

关于php - 生成单场淘汰赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22859730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com