题解 | #蛇形矩阵#

蛇形矩阵

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)))

全部评论
非常好!
点赞 回复 分享
发布于 2023-11-20 16:19 广东
大佬您好,lst = [(j+1)*j // 2 for j in range(1, n+1)]这句不太懂,而且为什么是range(1, n+1)
点赞 回复 分享
发布于 02-23 00:56 新疆
就这个算法看懂了。。
点赞 回复 分享
发布于 02-27 18:05 湖北

相关推荐

整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
评论
33
3
分享
牛客网
牛客企业服务