首先,抱歉我的英语我会尽力解释我的问题!
所以,我正在尝试用无限数量的玩家来制作一场淘汰赛。
现在我只是想着它,我没有任何纸上谈兵,我想我不会有两个(2 4 8 16 32名球员......)比赛的问题,我的脑子挂在玩家直接去第2轮,我不知道如何确定这个数字以及放置它们的位置。
例如(有59名球员)
我认为有一个公式,但我找不到它,我有一些想法,但我对一个案例过于具体,而不知道它是否适用于另一个案例。
谢谢你能帮助我!
答案 0 :(得分:11)
对于给定的数字N,找到它与2的最小幂之间的差值,至少与N一样大。对于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
答案 1 :(得分:0)
哦,谢谢你@ raina77ow,你引起了我的注意,所以这是我的计算:
64/2 = 32
59/2 = 29 ( rounded to the lower ) => nb of total player at left ( round 1 & 2)
32-29 = 3 => nb players at left going to round 2
29-3 = 26 => nb players at left going to round 1
59-29 = 30 => nb total players at right ( round 1 & 2 )
5-3 = 2 => nb players going to round 2 at right
30-2 = 28 = nb players round 1
` 我想我现在可以制作一个算法,如果它适用于每个案例。