N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Code
public class Solution {
int res=0;
private boolean isValid(int[] state, int r){
for (int i=0; i<r; i++){
if (state[i]==state[r] || (Math.abs(state[i]-state[r])==(r-i))) return false;
}
return true;
}
private void nqueens(int[] state, int cur, int n){
if (cur==n) {res++;}
else {
for (int i=0; i<n; i++){
state[cur]=i;
if (isValid(state,cur)){
nqueens(state, cur+1, n);
}
}
}
}
public int totalNQueens(int n) {
int[] state = new int[n];
nqueens(state, 0, n);
return res;
}
}