题解 | #八皇后#
八皇后
https://www.nowcoder.com/practice/fbf428ecb0574236a2a0295e1fa854cb
#include<bits/stdc++.h> using namespace std; const int N=100; int col[N],dg[N],udg[N]; int g[N][N]; int n,cnt; void dfs(int x) { if(x>8) { cnt++; if(cnt==n) { for(int i=1;i<=8;i++) for(int j=1;j<=8;j++) if(g[i][j]==1) cout<<j; cout<<endl; } } for(int i=1;i<=8;i++) { if(!col[i]&&!dg[x+i]&&!udg[n-x+i]) { g[x][i]=1; col[i]=dg[x+i]=udg[n-x+i]=1; dfs(x+1); g[x][i]=0; col[i]=dg[x+i]=udg[n-x+i]=0; } } } int main() { while(scanf("%d",&n)!=EOF) { cnt=0; for(int i=1;i<=8;i++) { for(int j=1;j<=8;j++) { g[i][j]=0; } } dfs(1); } return 0; }