原题链接(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()