Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
public class Solution {
int sum = 0;
public int totalNQueens(int n) {
int[] A = new int[n];
nQueens(A, 0, n);
return sum;
}
public void nQueens(int[] A, int cur, int n){
if(cur == n) { sum++; return; }
for(int i = 0; i < n; i++){
A[cur] = i;
if(isValid(A, cur)){
nQueens(A, cur+1, n);
}
}
}
public Boolean isValid(int[] A, int cur){
for(int i = 0; i < cur; i++){
if(A[i] == A[cur] || Math.abs(A[i]-A[cur]) == cur - i) return false;
}
return true;
}
}
No comments:
Post a Comment