#1844. 【提高】循环赛日程表

【提高】循环赛日程表

题目描述

设有 n=2kn = 2^k 个运动员要进行网球循环赛。请设计一个满足下列要求的比赛日程表:

  1. 每个选手必须与其他 n1n-1 个选手各赛一次;
  2. 每个选手每天只能参赛一次;
  3. 循环赛在 n1n-1 天内结束。

需要输出一个 nn 行、nn 列的表,第 ii 行表示第 ii 个选手的日程;该行中的第 jj 个数表示第 ii 个选手在第 jj 天对应的选手编号。第 11 天可填选手自己作为表头,因此样例中第 11 列为 1,2,ldots,n1,2,ldots,n

输入格式

输入一行一个整数 kk

输出格式

n=2kn=2^k。输出 nn 行,每行 nn 个整数,相邻整数之间用一个空格隔开,表示循环赛日程表。

3
1 2 3 4 5 6 7
2 1 4 3 6 5 8
3 4 1 2 7 8 5
4 3 2 1 8 7 6
5 6 7 8 1 2 3
6 5 8 7 2 1 4
7 8 5 6 3 4 1
8 7 6 5 4 3 2

数据范围与提示

  • 1k51 \le k \le 5,即 2n322 \le n \le 32
  • 请按照样例所示的递归构造表输出。

来源

递归与分治