题解 | #蛇形矩阵#

蛇形矩阵

https://ac.nowcoder.com/acm/problem/22231

n=int(input())
flag=1
# 填充的数字
cnt=1
# 下一个要填充数字的位置
x,y=0,0
g=[[0]*n for i in range(n)]

while cnt<=n*n:
    # 先向右上角填充,一直填充到 出了上边界或者右边界
    while x>=0 and y<n:
        g[x][y]=cnt
        cnt+=1
        x-=1
        y+=1
    # 到边界后向下移动一格
    x+=1
    # 如果向下移动一格之后,y仍然出界,说明在对角线,那么向左下方移动一次
    if y>=n:
        x+=1
        y-=1
    # 向左下角填充,一直填充到 出了下边界或者左边界
    while x<n and y>=0:
        g[x][y]=cnt
        cnt+=1
        x+=1
        y-=1
    # 向右移动一格
    y+=1
    # 如果向右移动一格之后,x仍然出界,说明在对角线,那么向右上方移动一次
    if x>=n:
        x-=1
        y+=1
for i in range(n):
    for j in range(n):
        print(g[i][j],end=' ')
    print()
全部评论

相关推荐

点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-20 14:01
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务