#P1044. n阶奇数幻方
n阶奇数幻方
题目背景
幻方是一个很神奇的方阵,它的每行、每列、每条对角线的数字之和都相等。我们可以通过以下方法构建一个n阶幻方(n为奇数)。
先从1开始填第一个数字,填在第一行的中间。
-如果该数字在第一行但不在最后一列,则下一个数字写在最后一行,列数为该数字的右一列;
-如果该数字在最后一列但不在第一行,则下一个数字写在第一列,行数为该数字的上一行;
-如果该数字在第一行最后一列,则下一个数字写在该数字的正下方;
-如果该数字既不在第一行,也不在最后一列,如果该数字的右上角还未填数,则将下一个数字填在该数字的右上方,否则填在该数字的正下方。
题目描述
输入1个奇数n,按规则输出n×n的幻方。
输入格式
一个奇数n(1≤n≤20),代表幻方的阶数。
输出格式
按照样例显示n×n个正整数,每行相邻两个数之间有一个空格。
输入/输出样例
3
8 1 6
3 5 7
4 9 2
5
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
样例1解释
下图是填充一个3阶幻方的过程,每次新填的数用绿色表示,红色表示原本应该填的位置,但根据规则不能填。
说明/提示
时间1000ms,内存256MiB