题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
n = int(input().strip())
for i in range(n):
num = 0
for j in range(i + 1, n + 1):
if i == 0 and j == 1:
num = 1
print(num, end=" ")
elif i + 1 == j:
num = int((i + 1) * i / 2 + 1)
print(num, end=" ")
else:
num += j
print(num, end=" ")
print("")
通过观察发现,第一例规律如下
第一行第一列:1
第二行第一列:2 = 1 + 1
第三行第一列:4 = 1 + 1 + 2
第四行第一列:7 = 1 + 1 + 2 + 3
可以发现从第二列开始便有规律 (n+1)n/2+1(等差数列求和 + 1)
---------------------------------------------------------
通过观察第一行发现规律 1,3,5,9 前两个数差2,第二个和第三个数之间差3,第三个数和第四个数之间差4
第二行2,5,9 前两个数差3,第二个和第三个数之间差4
以此类推,每一行的第一个数和第二个数之间差行数那么多的值,后面每两个数之间的差在此基础上加1
---------------------------------------------------------
通过以上分析,需特殊判断第一行第一列、第一列、以及除此之外的数。这里让i从0开始(以便于求第一列的值),j从i+1开始(以便于计算前后两个数的差值)


