34. N皇后问题 II
根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局。
样例
例1:
输入: n=1
输出: 1
解释:
1:
1
例2:
输入: n=4
输出: 2
解释:
1:
0 0 1 0
1 0 0 0
0 0 0 1
0 1 0 0
2:
0 1 0 0
0 0 0 1
1 0 0 0
0 0 1 0
输入测试数据 (每行一个参数)如何理解测试数据?
public class Solution {
int result = 0;
public int totalNQueens(int n) {
for (int i = 0; i < n; i++) {
List<Integer> num = new ArrayList<>();
num.add(i);
next(n, num);
}
return result;
}
private void next(int n, List<Integer> num) {
if (num.size() == n) {
result++;
return;
}
for (int k = 0; k < n; k++) {
if (isValid(num, k)) {
num.add(k);
next(n, num);
num.remove(num.size() - 1);
}
}
}
private boolean isValid(List<Integer> num, int k) {
int row = num.size();
for (int i = 0; i < num.size(); i++) {
int v = num.get(i);
if (v == k) {
return false;
}
if (i + v == row + k) {
return false;
}
if (i - v == row - k) {
return false;
}
}
return true;
}
}