#L0237. 奇阶幻方填数

奇阶幻方填数

题目背景

幻方是一种古老的数学游戏。在一个 N×NN\times N 的方阵中填入 11N2N^2 的所有正整数,使得每一行、每一列以及两条对角线上的数字之和都相等,这样的方阵就叫做幻方。当 NN 为奇数时,存在一种系统化的构造方法。

题目描述

给定一个奇数 NN,请按照以下规则构造一个 N×NN\times N 的幻方:

  1. 11 填入第一行的正中央位置。
  2. 从刚填入数字的位置出发,尝试向右上方移动一格(即行号减一、列号加一)。如果向上越界则环绕到最后一行,如果向右越界则环绕到第一列。若目标位置尚未填数,则填入下一个数字。
  3. 如果第 2 步的目标位置已被占用,则从上一个数字的位置向正下方移动一行(行号加一,列号不变;若向下越界则环绕到第一行)。该位置一定为空,填入下一个数字。
  4. 重复步骤 2 和 3,直到所有格子填满。

输入格式

输入一个正奇数 NN,保证 3N213 \le N \le 21

输出格式

输出 NN 行,每行 NN 个空格分隔的正整数,表示构造好的幻方。

样例

3
8 1 6

3 5 7 4 9 2

</p>
难度 普及-
通过率
尝试 0
已通过 0
ID
965
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者