3
int totalNQueens(int n) {4
vector<bool> col(n), diag(2 * n - 1), anti_diag(2 * n - 1);5
return solve(col, diag, anti_diag, 0);8
int solve(vector<bool> &col, vector<bool> &diag, vector<bool> &anti_diag, int row) {9
int n = size(col), count = 0;10
if (row == n) return 1;11
for (int column = 0; column < n; column++)12
if (!col[column] && !diag[row + column] && !anti_diag[row - column + n - 1]) {13
col[column] = diag[row + column] = anti_diag[row - column + n - 1] = true;14
count += solve(col, diag, anti_diag, row + 1);15
col[column] = diag[row + column] = anti_diag[row - column + n - 1] = false;