题解 | #蛇形矩阵#
蛇形矩阵
https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e
我在题解中看到的解题方式,所以想详细将每一个算式的意义和解题思路写详细,然后分享给和我一样基础很差的同学,节约时间
# 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
# 例如,当输入5时,应该输出的三角形为:
# 1 3 6 10 15
# 2 5 9 14
# 4 8 13
# 7 12
# 11
# 解题思路:
# 每一行的数据都有规律,第一行的数据规律就是前一个数加上当前数的位置(第几位这样),
# 如6的位置是第3位,前一位的数字是3,因此第第三位就是6,第四位则是6+4=10,
# 接下来的每一行的数据均是上一行数据除去第一列,然后每个值减1
# 因此只要将前一行的数据进行截取及减1即可
# 用嵌套循环,外层循环控制行数,内层循环控制本行的数据
n = int(input())
# 存储上一层的数据,如果放在for循环中,会导致每次循环都会将lst重置为空
lst = []
# 控制行数
for i in range(n):
if i == 0:
# 第一行的数据是固定的,其n(n-1)/2
# j 表示每一列的数据
lst = [(j+1)*j // 2 for j in range(1, n+1)]
else:
# 后面的数据均是前一行的数据减1列然后减1
# 取lst列表的第二行之后的数据,然后用列表推导式将其每一项减一
lst = [ j-1 for j in lst[1:]]
# 得到一行的数据之后直接将其进行输出
print(' '.join(map(str, lst)))