题解 | 蛇形矩阵

蛇形矩阵

https://www.nowcoder.com/practice/f228a074c5274619b26be544962375e1

n = int(input())
a = [[0] * n for _ in range(n)]

x, y, d = 0, 0, 0
dirs = [(-1, 1), (1, -1)]
num = 1
while num <= n * n:
    a[x][y] = num
    num += 1
    nx = x + dirs[d][0]
    ny = y + dirs[d][1]
    if nx < 0 or nx >= n or ny < 0 or ny >= n or a[nx][ny] != 0:
        if d == 0:
            if y + 1 < n and a[x][y+1] == 0:
                y += 1
            else:
                x += 1
        else:
            if x + 1 < n and a[x+1][y] == 0:
                x += 1
            else:
                y += 1
        d = (d + 1) % 2
    else:
        x, y = nx, ny

for row in a:
    print(' '.join(map(str, row)))

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务