题解 | #蛇形矩阵#

蛇形矩阵

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()
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务