- 利用x+y标记副对角线,利用x-y标记主对角线,+n防止为负
- G存图,n表示n皇后,ans是最后的结果,n > 0
int ans = 0;
int n;
int vis[3][100];
int G[100];
void n_queen(int row){
if(row == n)
ans++;
else{
for(int col = 0; col < n; ++col){
if(!vis[0][col] && !vis[1][row+col] && !vis[2][row-col+n]) {
G[row] = col;
vis[0][col] = vis[1][row+col] = vis[2][row-col+n] = 1;
n_queen(row+1);
vis[0][col] = vis[1][row+col] = vis[2][row-col+n] = 0;
}
}
}
}