题解 | #蛇形矩阵#

蛇形矩阵

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

咱比较笨,找不到数字之间的规律,只能按照蛇形矩阵本来的规则来。

把蛇形矩阵旋转45度其实就是个金字塔,最上面是1,最右下方是最大的数,即10

原本:

1 3 6 10

2 5 9

4 8

7

旋转一下:

1

2 3

4 5 6

7 8 9 10

list1就是旋转后的矩阵

然后可以发现旋转后的矩阵里每一行的最后一个元素,就是蛇形矩阵中第一行的元素,倒数第二个元素就是第二行的,依次类推。

while 1:
    try:
        n = int(input())
        list1 = []
        for i in range(1,n+1):
            list1.append([0]*i)
        a = 0
        for i in range(n):
            for j in range(i+1):
                a = a + 1
                list1[i][j]=a
        list2,she = [],[]
        for i in range(1,n+1):
            for line in list1:
                if line:
                    list2.append(line.pop(-1))
            she.append(" ".join(map(str,list2)))
            list2 = []
        for i in she:
            print(i)
    except:
        break
全部评论
真是妙蛙种子吃着妙脆角来到米奇妙妙屋,妙到家了,化繁为简,666
5 回复 分享
发布于 2022-04-22 07:44
你这叫比较笨那我就是猪头了,自闭了
5 回复 分享
发布于 2022-05-28 15:51
基于这位大佬的代码略作修改,这样就不需要list2和she了,因为每次输出的结果其实是 [0,-1],[1,-1],[2,-1],[3,-1], 换行,[1,-2],[2,-2],[3,-2],观察得知j从1到N,i从j-1到N,每次j新循环时换行即可: for j in range(1,n+1): for i in range(j-1,n): print(list1[i][-j],end=" ") print("")
3 回复 分享
发布于 2023-02-27 23:42 德国
这个想法妙哇,一下子就变简单了
点赞 回复 分享
发布于 2022-03-22 18:03
牛蛙牛蛙
点赞 回复 分享
发布于 2022-04-24 11:19
确实6
点赞 回复 分享
发布于 2022-05-13 11:04
妙哇!
点赞 回复 分享
发布于 2022-08-05 16:54
for i in range(n): for line in lis1: if line: lis2.append(line.pop(-1)) she.append(' '.join(map(str,lis2))) lis2 = [] 这里的两个for循环有点疑惑,有哪位大佬可以帮忙讲解下吗
点赞 回复 分享
发布于 2023-02-14 11:10 上海
为什么代码里if line:不能少呢?缺少这一句的话没有输出,为啥呀
点赞 回复 分享
发布于 2023-02-25 12:55 山东
为什么最后要 list2 =[] 一下?
点赞 回复 分享
发布于 2023-03-04 12:14 山东

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
115 28 评论
分享
牛客网
牛客企业服务