AcWing 843. n-皇后问题
原题链接
中等
作者:
HUE菜鸡联盟
,
2021-12-05 19:11:30
,
所有人可见
,
阅读 129
#include<iostream>
#include<algorithm>
#include<vector>
#include<math.h>
#include<queue>
#include<string.h>
#define for0(x,n) for(int x=0;x<n;x++)
#define for1(x,n) for(int x=1;x<=n;x++)
using namespace std;
typedef long long ll;
ll n,m,t;
const int tt=10,mod=1e9+7,INF=0x7f7f7f7f7f7f7f7f;
char a[tt][tt];
int cnt=1;
bool col[tt],dg[tt],udg[tt];
void dfs(int x)
{
if(x==n)
{
for0(i,n)cout<<a[i]<<endl;
cout<<endl;
}
for0(i,n)
{
if(!col[i]&&!dg[x+i]&&!udg[n-x+i])
{
a[x][i]='Q';
col[i]=dg[x+i]=udg[n-x+i]=true;
dfs(x+1);
col[i]=dg[x+i]=udg[n-x+i]=false;
a[x][i]='.';
}
}
}
int main()
{
cin>>n;
for0(i,n)
{
for0(j,n)
{
a[i][j]='.';
}
}
dfs(0);
}