N-Queens II、
跟51. N-Queens I条件一样 只是此题求出有多少个解即可
代码
public class Solution {
Set<Integer> cols = new HashSet<Integer>();
Set<Integer> diags1 = new HashSet<Integer>();
Set<Integer> diags2 = new HashSet<Integer>();
public int totalNQueens(int n) {
return totalqueens(0, 0, n);
}
public int totalqueens(int row, int count,int n) {
for(int col = 0; col < n; col++){
if(cols.contains(col)){
continue;
}
int di1 = col - row + n;
if(diags1.contains(di1)){
continue;
}
int di2 = col + row;
if(diags2.contains(di2)){
continue;
}
if(row == n-1){
count++;
}else {
cols.add(col);
diags1.add(di1);
diags2.add(di2);
count = totalqueens(row+1, count, n);
cols.remove(col);
diags1.remove(di1);
diags2.remove(di2);
}
}
return count;
}
}