4 条题解

  • 1
    @ 2023-8-27 13:09:32
    wasd = [[0, 1], [-1, 0], [0, -1], [1, 0]]#控制snake方向
    n = int(input())
    square = [[0 for _ in range(n + 1)] for __ in range(n + 1)]#创建初始矩阵,多创建一格防止outofindex
    
    def sq_print():
        #按题目格式打印最终结果
        for i in range(n):
            for j in range(n):
                print(square[i][j], end = ' ')
            print()
    
    def sq_fill():
        x = n - 1
        y = 0#初始位置
        ctrl = 0#控制转向符
        for i in range(1, n * n + 1):
            square[y][x] = i
            x += wasd[ctrl][0]
            y += wasd[ctrl][1]
            if ((x == n - 1) and (y == n - 1)) or ((x == 0) and (y == n - 1)) or ((x == 0) and (y == 0)) or (square[y + wasd[ctrl][1]][x + wasd[ctrl][0]] != 0):
                #当snake触及矩阵底部,或snake将要前往的下一个位置已经有数字的时候,控制转向
                ctrl += 1
                ctrl %= 4#控制符应该是{0,1,2,3},即模4的循环群
    
    sq_fill()
    sq_print()
    

    信息

    ID
    131
    时间
    3000ms
    内存
    128MiB
    难度
    6
    标签
    (无)
    递交数
    541
    已通过
    179
    上传者