题目
根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。
样例
比如n=4,存在2种解决方案
代码
class Solution {
/**
* Calculate the total number of distinct N-Queen solutions.
* @param n: The number of queens.
* @return: The total number of distinct solutions.
*/
public static int sum;
public int totalNQueens(int n) {
sum = 0;
int[] usedColumns = new int[n];
placeQueen(usedColumns, 0);
return sum;
}
public void placeQueen(int[] usedColumns, int row) {
int n = usedColumns.length;
if (row == n) {
sum ++;
return;
}
for (int i = 0; i < n; i++) {
if (isValid(usedColumns, row, i)) {
usedColumns[row] = i;
placeQueen(usedColumns, row + 1);
}
}
}
public boolean isValid(int[] usedColumns, int row, int col) {
for (int i = 0; i < row; i++) {
if (usedColumns[i] == col) {
return false;
}
if ((row - i) == Math.abs(col-usedColumns[i])) {
return false;
}
}
return true;
}
};