1 条题解

  • 0
    @ 2026-2-10 16:12:42
    #include<bits/stdc++.h>
    using namespace std;
    int dx[8]={-2,-2,-1,1,2,2,1,-1};
    int dy[8]={-1,1,2,2,1,-1,-2,-2};
    int n,a[12][12];
    bool bk;
    void dfs(int x,int y,int k)
    {
        if(bk) return ;
        if(k==n*n)
        {
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<n;j++) printf("%d ",a[i][j]);
                printf("%d\n",a[i][n]);
            }
            bk=true;
        }
        else
        {
            for(int i=0;i<8;i++)
            {
                int xx,yy;
                xx=x+dx[i];yy=y+dy[i];
                if(xx>=1 && xx<=n && yy>=1 && yy<=n &&a[xx][yy]==0)
                {
                    a[xx][yy]=k+1;
                    dfs(xx,yy,k+1);
                    a[xx][yy]=0;
                }
            }   
        }
    }
    int main()
    {
        scanf("%d",&n);
        memset(a,0,sizeof(a));
        a[1][1]=1;bk=false;
        dfs(1,1,1);
        if( !bk) printf("-1\n");
        return 0;
    }
    
    • 1

    信息

    ID
    80
    时间
    1000ms
    内存
    128MiB
    难度
    7
    标签
    递交数
    175
    已通过
    46
    上传者