843. n-皇后问题

const int N=20;
char g[N][N];
bool col[N],dg[N],udg[N];
int n;

void dfs(int u)
{
    if(u == n)
    {
        for(int i=0;i<n;i++) cout<<g[i]<<endl;
        cout<<endl;
        return;
    }

    for(int i=0;i<n;i++)
        if(!col[i] && !dg[u+i] && !udg[i-u+n])
        {
            col[i]=dg[u+i]=udg[i-u+n]=true;
            g[u][i]='Q';
            dfs(u+1);
            col[i]=dg[u+i]=udg[i-u+n]=false;
            g[u][i]='.';
        }
}

int main()
{
    cin>>n;

    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            g[i][j]='.';

    dfs(0);

    //system("pause");
}
posted @ 2020-09-17 12:16  Dazzling!  阅读(128)  评论(0编辑  收藏  举报