题解 | #蛇形矩阵#

蛇形矩阵

https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

我首先创建了二维数组来存放数字,所以这个方法有耗内存,从直觉上来看蛇形矩阵就是斜着从左到右,从下往上一层层加,第0层是1; 第1层是2,3;....。所以我就按照顺序给数组里面一个个添加数字就好了,最后将他打印。
我添加数字的位置的逻辑是:设y_o为当前的层数,当纵坐标为0的时候,说明这一层填满了,下一个数字就应该在之前的层数基础+1,然后纵坐标-1,横坐标+1,再等到纵坐标为0之后,y_0+1到下一层,纵坐标等于层数,横坐标重制为0,继续纵坐标-1,横坐标+1 填数字,以此往复。
num = int(input())
n = int(num*(num+1)/2)
ls = []
for i in range(num):
    ls.append([0]*num)
x,y = 0,0
y_o = 0
for i in range(1,n+1):
    ls[y][x] = i
    if y == 0:
        y_o +=1
        y = y_o
        x = 0
    else:
        y -= 1
        x += 1

for i in range(num):
    for j in ls[i]:
        if j != 0:
            print(j,end = ' ')
    print()


全部评论

相关推荐

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