感想
太简单了......我居然都会写
#include<bits/stdc++.h>
using namespace std;
const int N=15;
char a[N][N];
int n;
bool judge(int x,int y)
{
for(int i=1;i<=n;i++)
{
if(a[i][y]=='Q')return false;
}
for(int i=x,j=y;i<=n&&j<=n;i++,j++)
{
if(a[i][j]=='Q')return false;
}
for(int i=x,j=y;i>0&&j>0;i--,j--)
{
if(a[i][j]=='Q')return false;
}
for(int i=x,j=y;i>0&&i<=n&&j>0&&j<=n;i--,j++)
{
if(a[i][j]=='Q')return false;
}
for(int i=x,j=y;i>0&&i<=n&&j>0&&j<=n;i++,j--)
{
if(a[i][j]=='Q')return false;
}
return true;
}
void dfs(int cnt)
{
if(cnt>n)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)cout<<a[i][j];
puts("");
}
puts("");
return ;
}
for(int i=1;i<=n;i++)
{
if(judge(cnt,i))
{
a[cnt][i]='Q';
dfs(cnt+1);
a[cnt][i]='.';
}
}
}
int main()
{
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
a[i][j]='.';
}
}
cin>>n;
dfs(1);
return 0;
}