题目:
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
char g[20][20];
bool st[10],dg[10],udg[10];
void dfs(int u){
if(u==n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)printf("%c",g[i][j]);
printf("\n");
}
printf("\n");
return ;
}
for(int i=0;i<n;i++){
if(!st[i]&&!dg[u+i]&&!udg[-u+i+n]){
g[u][i]='Q';
st[i]=dg[u+i]=udg[-u+i+n]=true;
dfs(u+1);
st[i]=dg[u+i]=udg[-u+i+n]=false;
g[u][i]='.';
}
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)g[i][j]='.';
}
dfs(0);
return 0;
}