Problem1263--奇数幻方

1263: 奇数幻方

Time Limit: 1.000 Sec  Memory Limit: 128 MB
Submit: 94  Solved: 49
[Submit] [Status] [Web Board] [Creator:]

Description

下面是一个3阶的奇数幻方。
8
1
6
3
5
7
4
9
2
它由1到32的自然数组成一个3*3的方阵,方阵的每一行,每一列和两个对角线上的各数字之和都相等,且等于 n(n2+1)/2(n是方阵的行数或列数)。编程打印出n为30以内的奇数阶幻方,n由键盘输入。



奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯方)。填写方法是这样:
把1(或最小的数)放在第一行正中; 按以下规律排列剩下的n*n-1个数:
(1)、每一个数放在前一个数的右上一格;
(2)、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;
(3)、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;
(4)、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;
(5)、如果这个数所要放的格已经有数填入,处理方法同(4)。

这种写法总是先向“右上”的方向,象是在爬楼梯。




Input

奇数n(小于30)。

Output

n行,每行n个数,表示罗伯特法填写的n阶奇数幻方。

Sample Input

3

Sample Output

8 1 6
3 5 7
4 9 2

Source/Category


[Submit] [Status]