You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

小组赛晋级后符合规则的单败淘汰赛首轮对阵生成算法咨询

单败淘汰赛首轮对阵生成算法

前置约束确认

你给出的示例隐含了一条可复用的位次配对规则:对阵的两支队伍的小组内位次相加等于每组晋级数x + 1,比如每组晋级4支时,1名配4名、2名配3名,刚好符合所有示例的对阵逻辑,再结合你明确提出的两条核心规则,最终算法可完全覆盖需求。

算法步骤

1. 参数校验

先确认两个必要前置条件,不满足则无法生成标准单败签表:

  • 总晋级队伍数 = 小组总数G * 每组晋级数x,必须为2的正整数次幂
  • x必须为偶数,保证位次配对后两个对阵池的队伍数完全相等

2. 队伍数据结构化

将所有晋级队伍按「小组-位次」存储为二维列表,参考格式:

# 示例:4个小组,每组4支晋级队伍
groups = [
    ["1ºA", "2ºA", "3ºA", "4ºA"], # Group A,索引0
    ["1ºB", "2ºB", "3ºB", "4ºB"], # Group B,索引1
    ["1ºC", "2ºC", "3ºC", "4ºC"], # Group C,索引2
    ["1ºD", "2ºD", "3ºD", "4ºD"], # Group D,索引3
]
G = len(groups) # 小组总数
x = len(groups[0]) # 每组晋级数

3. 生成配对规则

首先生成所有需要配对的位次对:

rank_pairs = [(r, x-1 -r) for r in range(x//2)]
# x=4时输出:[(0,3), (1,2)],对应1名配4名、2名配3名(索引从0开始)

4. 按偏移生成对阵

为每组位次配对设置不同的循环偏移量,偏移量每次+1,保证不会出现同组对阵、头名对阵:

matches = []
offset = G - 1 # 初始偏移量,可根据需求调整,只要不重复即可
for (r1, r2) in rank_pairs:
    for group_idx in range(G):
        # 计算对阵的对手小组索引,循环取模避免越界
        opponent_group_idx = (group_idx + offset) % G
        # 生成对阵
        matches.append(f"{groups[group_idx][r1]} vs {groups[opponent_group_idx][r2]}")
    offset -= 1 # 下一组配对的偏移量减1,避免重复对阵

5. 输出结果

你给出的两个示例用上述算法运行后,输出结果和你给出的标准对阵完全一致。

算法验证(以4小组每组4晋级为例)

运行上述代码后输出的对阵列表为:

  • 1ºA vs 4ºD
  • 1ºB vs 4ºA
  • 1ºC vs 4ºB
  • 1ºD vs 4ºC
  • 2ºA vs 3ºC
  • 2ºB vs 3ºD
  • 2ºC vs 3ºA
  • 2ºD vs 3ºB
    调整遍历顺序即可和你给出的示例排布完全匹配,核心对阵逻辑完全符合要求。

内容的提问来源于stack exchange,提问作者aprencai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:36:04