Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
class Solution {
public:
int cnt = 0;
int *col;
int totalNQueens(int n) {
col = new int[n];
generate(n,0);
return cnt;
}
void generate(int n,int dep){
if(dep == n){
cnt ++;
return;
}
for(int i = 0;i < n;i ++){
if(check(dep,i)){
generate(n,dep + 1);
col[dep] = -1;
}
}
}
bool check(int k,int i){
col[k] = i;
for(int i = 0;i < k;i ++)
if(col[i] == col[k] || abs(col[i] - col[k]) == abs(i - k)) return false;
return true;
}
};