题目:所谓“往返跑方阵”,是指对任意给定的n,将1到n×n的整数依次填写到n×n的方阵中,从右下角第1个格子开始,向上填充;到最上面一行后,再向左一列,改变方向,向下填充;倒底后,往左移动一列,改变方向,向上填充;.…… 以此类推,直到将n×n的方阵填满。本题要求构造这样的“往返跑方阵”。
输入格式:
输入一个正整数n(1⩽n⩽10 )
输出格式:
输出n×n的往返跑方阵。每行n个数字,每个数字占3位,右对齐。
输入样例1:
在这里给出一组输入。例如:
3
输出样例1:
在这里给出相应的输出。例如:
9 4 3
8 5 2
7 6 1
输入样例2:
在这里给出一组输入。例如:
5
输出样例2:
在这里给出相应的输出。例如:
25 16 15 6 5
24 17 14 7 4
23 18 13 8 3
22 19 12 9 2
21 20 11 10 1
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
这里使用Python3进行编译,否则会报错。
A=int(input())
multilist = [[1 for col in range(A)] for row in range(A)]
l=1
J=0
T=A-1
for i in range(A):
for j in range(A):
if(i%2!=0):
multilist[J][i]=l
l+=1
J+=1
else:
multilist[T][i]=l
l+=1
T-=1
J=0
T=A-1
#print(multilist)
#交换列,外层循环控制交换列的次数,内层循环控制交换两列对应的元素
N=int(A/2)
c=A-1
for i in range(N):
for j in range(A):
t=multilist[j][i]
multilist[j][i]=multilist[j][c]
multilist[j][c]=t
c-=1
for i in range(A):
for j in range(A):
t=multilist[i][j]
if(i==A-1):
print("%3d" %(t),end="")
else:
if(j==A-1):
print("%3d" %(t))
else:
print("%3d" %(t),end="")