版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN___CSDN/article/details/88803039
1.将“1”放在第一行,中间一列;
2.从2开始至N*N各数按如下规律:
每一个数存放的行比上一个数的行减1;
每一个数存放的列比上一个数的列加1;
3.当一个数行为1,下一个数行为N;
4.当一个数列数为N,下一个数列数为1,行数减1;
5.若按上述规则确定的位置有数字,或上一个数位第1行第N列,
下一个数字位置为上一个数的正下方(即行数减1,列数不变);
n = int(input())
x = [[-1 for i in range(n)] for i in range(n)]
line = 0
col = n//2
cnt = 1
while cnt<=n**2:
x[line][col] = cnt
preline = line
precol =col
line -= 1
if line==-1:
line = n-1
col = (col+1)%n
if x[line][col]!=-1 :
line = preline +1
col = precol
cnt+=1
for item in x:
print(item)