题解 | #蛇形矩阵#
蛇形矩阵
https://ac.nowcoder.com/acm/problem/22231
n=int(input())
flag=1
# 填充的数字
cnt=1
# 下一个要填充数字的位置
x,y=0,0
g=[[0]*n for i in range(n)]
while cnt<=n*n:
# 先向右上角填充,一直填充到 出了上边界或者右边界
while x>=0 and y<n:
g[x][y]=cnt
cnt+=1
x-=1
y+=1
# 到边界后向下移动一格
x+=1
# 如果向下移动一格之后,y仍然出界,说明在对角线,那么向左下方移动一次
if y>=n:
x+=1
y-=1
# 向左下角填充,一直填充到 出了下边界或者左边界
while x<n and y>=0:
g[x][y]=cnt
cnt+=1
x+=1
y-=1
# 向右移动一格
y+=1
# 如果向右移动一格之后,x仍然出界,说明在对角线,那么向右上方移动一次
if x>=n:
x-=1
y+=1
for i in range(n):
for j in range(n):
print(g[i][j],end=' ')
print()