题解 | #八皇后#

八皇后

https://www.nowcoder.com/practice/fbf428ecb0574236a2a0295e1fa854cb

#include<bits/stdc++.h>
using namespace std;
const int N=100;
int col[N],dg[N],udg[N];
int g[N][N];
int n,cnt;
void dfs(int x)
{
    if(x>8)
    {
        cnt++;
        if(cnt==n)
        {
            for(int i=1;i<=8;i++)
                for(int j=1;j<=8;j++)
                    if(g[i][j]==1)
                        cout<<j;
            cout<<endl;
        }
    }
    for(int i=1;i<=8;i++)
    {
        if(!col[i]&&!dg[x+i]&&!udg[n-x+i])
        {
            g[x][i]=1;
            col[i]=dg[x+i]=udg[n-x+i]=1;
            dfs(x+1);
            g[x][i]=0;
            col[i]=dg[x+i]=udg[n-x+i]=0;
        }
    }
}
int main()
{
    while(scanf("%d",&n)!=EOF)
    {
        cnt=0;
        for(int i=1;i<=8;i++)
        {
            for(int j=1;j<=8;j++)
            {
                 g[i][j]=0;
            }
        }
        dfs(1);
    }
    return 0;
}

全部评论

相关推荐

07-08 21:30
已编辑
南昌大学 嵌入式软件开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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