Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Java Solutions( Refer to blog
http://blog.csdn.net/mbh_1991/article/details/23869459 and
http://blog.csdn.net/u011095253/article/details/9158473
):
public class Solution {
int count;
public int totalNQueens(int n) {
count=0;
int[] location=new int[n];
dfs(location,0,n);
return count;
}
private void dfs(int[] location,int cur,int n){
if(cur==n)
count++;
else{
for(int i=0;i<n;i++){
location[cur]=i;
if(isValid(location,cur))
dfs(location,cur+1,n);
}
}
}
private boolean isValid(int[] location,int cur){
for(int i=0;i<cur;i++){
if(location[i]==location[cur]||Math.abs(location[i]-location[cur])==cur-i)
return false;
}
return true;
}
}