7 条题解

  • -4
    @ 2024-9-7 12:50:37

    python版本的深搜!

    sys.setrecursionlimit(3000)
    def dfs(x,y,q):
        if q==n*n+1:
            return 0
        a[x][y]=q
        q=q+1
        if x==1 and y!=n:
            dfs(n,y+1,q)
        if x!=1 and y==n:
            dfs(x-1,1,q)
        if x==1 and y==n:
            dfs(x+1,y,q)
        if x!=1 and y!=n:
            if a[x-1][y+1]==0:
                dfs(x-1,y+1,q)
            else:
                dfs(x+1,y,q)
        return 0
    
    n=int(input())
    a=[[0 for i in range(n+2)] for j in range(n+2)]
    q=1
    p=(n+1)//2
    dfs(1,p,q)
    for i in range(1,n+1):
        for j in range(1,n+1):
            print(a[i][j],end=' ')
        print()
    

信息

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