在N皇后的基础上加入了显示棋盘的代码,看着特别养眼
#include<bits/stdc++.h>
using namespace std;
int n,a[1000010]; bool b[1000010],c[2000010],d[2000010];
void out(){
putchar('+');
putchar('-');
for(int i=1; i<=n<<1; i++)
putchar('-');
putchar('+');
putchar('\n');
for(int i=1; i<=n; i++){
putchar('|');
putchar(' ');
for(int j=1; j<a[i]; j++)
putchar('+'),putchar(' ');
putchar('o');
for(int j=1; j<=n-a[i]; j++)
putchar(' '),putchar('+');
putchar(' ');
putchar('|');
putchar('\n');
}
putchar('+');
putchar('-');
for(int i=1; i<=n<<1; i++)
putchar('-');
putchar('+');
putchar('\n');
}
void dfs(int x){
if(x>n){
out();
return ;
}
for(int i=1; i<=n; i++)
if(b[i]==0&&c[i+x]==0&&d[i-x+500]==0){
b[i]=1;
c[i+x]=1;
d[i-x+500]=1;
a[x]=i;
dfs(x+1);
b[i]=0;
c[i+x]=0;
d[i-x+500]=0;
}
}
int main(){
scanf("%d",&n);
dfs(1);
return 0;
}