三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

循环赛日程表问题

循环赛日程表问题

循环赛日程表问题(分治法实现)

题目描述

设有 n = 2^k 名选手进行网球循环赛,满足以下规则:

  1. 每个选手必须与其他所有选手各比赛一次
  2. 每个选手每天只能比赛一场
  3. 比赛在 n-1 天内完成

请使用分治法生成一个 n × n 的比赛日程表。
日程表中第 i 行第 j 列表示第 i 个选手在第 j 天的比赛对手。


分治规则

  1. 初始条件(2×2)
1 2
2 1
  1. 分治填充规则
  • 右上角:左上角 + 当前块大小的一半
  • 左下角:左上角 + 当前块大小的一半
  • 右下角:与左上角相同
  1. 依次填充 4×4 → 8×8 的日程表。

输入

无固定输入,固定输出 8×8 的循环赛日程表。


输出

输出一个 8×8 的整数矩阵,表示循环赛日程表。


样例输出

[1, 2, 3, 4, 5, 6, 7, 8]
[2, 1, 4, 3, 6, 5, 8, 7]
[3, 4, 1, 2, 7, 8, 5, 6]
[4, 3, 2, 1, 8, 7, 6, 5]
[5, 6, 7, 8, 1, 2, 3, 4]
[6, 5, 8, 7, 2, 1, 4, 3]
[7, 8, 5, 6, 3, 4, 1, 2]
[8, 7, 6, 5, 4, 3, 2, 1]
← 返回列表