7 条题解

  • 3
    @ 2024-9-7 12:53:07

    python递归有上限,so

    import sys

    sys.setrecursionlimit(3000)

    import sys
    sys.setrecursionlimit(3000)
    n=int(input())
    f=[[0 for i in range(100)]for j in range(100)]
    def out(x,y,cnt):
        cnt+=1
        if x>n or y>n or x<1 or y<1 or cnt>n*n:
            return
        f[x][y]=cnt
        if x==1 and y!=n:
            out(n,y+1,cnt)
        elif y==n and x!=1:
            out(x-1,1,cnt)
        elif x==1 and y==n:
            out(x+1,y,cnt)
        elif x!=1 and y!=n:
            if f[x-1][y+1]==0:
                out(x-1,y+1,cnt)
            else:   
                out(x+1,y,cnt)
    f[1][n//2+1]=1
    out(1,(n+1)//2,0)
    for i in range(1,n+1):
        for j in range(1,n+1):
            print(f[i][j],end=' ')
        print('')
    

    信息

    ID
    156
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    138
    已通过
    68
    上传者