Problem1508--n阶奇数幻方

1508: n阶奇数幻方

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 26  Solved: 16
[Status] [Submit] [Creator:]

Description

行列数相等的矩阵称为方阵。把正整数1~n*n(n为奇数)排成一个n*n的方针,使方阵中的每一行、每一列以及两条对角线上的数之和都相等,这样的方阵称为“n阶奇数幻方”。

3阶



5阶



21阶



    观察样例,发现规律:

     定义一个二维数组模拟填数通过的过程。分析样例会发现,n阶奇数幻方可以按下列方法生成:

     1,先把数字1填在第一行的正中间。然后用一个循环枚举K,填入剩余的数字。

     2,每次先找位置再填数。找位置的规律如下:如果K填在第i行第j列,那么一般情况下,下一个数k+1应该填在他的右上方。但是有两种特殊情况:如果右上方无格子也就是越界了,那么就应该把下一个数放在n行或者第1列;如果右上方已经有数了,那么下一个数K+1就应该填在第K个数的正下方。

Input

一行一个整数,n不大于21,而且是奇数。

Output

共n行,每行n个正整数,每个正整数占5列。

Sample Input Copy

5

Sample Output Copy

   19   25    1    7   13
   24    5    6   12   18
    4   10   11   17   23
    9   15   16   22    3
   14   20   21    2    8

Source/Category