原题链接(NC22231)
前四个if用于判断是否触碰边界
pos=1代表蛇向右上爬行
pos=-1代表蛇向左下爬行
#初始化n*n边界以及索引i,j
n=int(input())
arr=[[0]*n for i in range(n)]
i=0
j=0
arr[i][j]=1
pos=1
#根据题意先从右上走
for k in range(2,n**2+1):
if i==0 and pos==1 and j<n-1:#触碰上边界
j+=1
arr[i][j]=k
pos=-1
elif j==0 and pos==-1 and i<n-1:#触碰左边界
i+=1
arr[i][j]=k
pos=1
elif j==n-1 and pos==1 and i<n-1:#触碰右边界
i+=1
arr[i][j]=k
pos=-1
elif i==n-1 and pos==-1 and j<n-1:#触碰下边界
j+=1
arr[i][j]=k
pos=1
elif pos==1:#无触碰边界的正常右上方向爬行
i-=1
j+=1
arr[i][j]=k
elif pos==-1:#无触碰边界的正常左下方向爬行
i+=1
j-=1
arr[i][j]=k
#输出矩阵
for i in range(n):
for j in range(n):
print(arr[i][j],end=" ")
print()