解法一
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n;
char a[100][100];
bool col[N], dg[N],udg[N];
void dfs(int u)
{
if(n==u)
{
for(int i=0;i<n;i++) puts(a[i]);
puts("");
return ;
}
for(int i=0;i<n;i++)
{
if(!col[i]&&!udg[i+u]&&!dg[i-u+n])
{
a[u][i]='Q';
col[i]=udg[i+u]=dg[i-u+n]=1;
dfs(u+1);
col[i]=udg[i+u]=dg[i-u+n]=0;
a[u][i]='.';
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]='.';
dfs(0);
return 0;
}