我首先创建了二维数组来存放数字,所以这个方法有耗内存,从直觉上来看蛇形矩阵就是斜着从左到右,从下往上一层层加,第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()