AcWing 843. n-皇后问题
原题链接
中等
#include<iostream>
using namespace std;
const int N = 11;
char way[N][N];
bool dg[N*2], udg[N*2], cor[N];
int n;
void dfs(int r)
{
if(r == n)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cout<<way[i][j];
cout<<endl;
}
cout<<endl;
return;
}
for(int i=0;i<n;i++)
{
if(!cor[i]&!dg[i+r]&!udg[n-i+r])
{
way[r][i] = 'Q';
cor[i] = dg[i+r] = udg[n-i+r] = 1;
dfs(r+1);
cor[i] = dg[i+r] = udg[n-i+r] = 0;
way[r][i] = '.';
}
}
}
int main()
{
cin>>n;
for(int i = 0;i < n;i++)
for(int j = 0;j < n;j++)
way[i][j] = '.';
dfs(0);
return 0;
}