Total Accepted: 6667 Total Submissions: 21387
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
public class Solution {
public int totalNQueens(int n) {
int[] path = new int[n+1];
dfs(path, n, 0);
return path[n];
}
public void dfs(int[] path, int n, int level) {
if (level == n) {
path[n]++;
return;
}
for (int i = 0; i < n; i++) {
path[level] = i;
if (check(path, level)) dfs(path, n, level + 1);
}
}
public boolean check(int[] path, int level) {
for (int i = 0; i < level; i++) {
if ((path[i]==path[level]) || Math.abs(path[i]-path[level]) == (level - i))
return false;
}
return true;
}
}