Leetcode: N-Queens II
2014-10-07 05:40
363 查看
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
Same as N-Queens. Use recursion within a loop. The result should be a static integer.
public class Solution {
public static int sum;
public int totalNQueens(int n) {
if (n <= 0) {
return 0;
}
sum = 0;
ArrayList<Integer> cols = new ArrayList<Integer>();
helper(n, cols);
return sum;
}
private void helper(int n, ArrayList<Integer> cols) {
if (cols.size() == n) {
sum++;
return;
}
for (int i = 0; i < n; i++) {
if (isValid(cols, i)) {
cols.add(i);
helper(n, cols);
cols.remove(cols.size() - 1);
}
}
}
private boolean isValid(ArrayList<Integer> cols, int col) {
int row = cols.size();
for (int i = 0; i < row; i++) {
if (cols.get(i) == col || Math.abs(cols.get(i) - col) == Math.abs(i - row)) {
return false;
}
}
return true;
}
}
Now, instead outputting board configurations, return the total number of distinct solutions.
Same as N-Queens. Use recursion within a loop. The result should be a static integer.
public class Solution {
public static int sum;
public int totalNQueens(int n) {
if (n <= 0) {
return 0;
}
sum = 0;
ArrayList<Integer> cols = new ArrayList<Integer>();
helper(n, cols);
return sum;
}
private void helper(int n, ArrayList<Integer> cols) {
if (cols.size() == n) {
sum++;
return;
}
for (int i = 0; i < n; i++) {
if (isValid(cols, i)) {
cols.add(i);
helper(n, cols);
cols.remove(cols.size() - 1);
}
}
}
private boolean isValid(ArrayList<Integer> cols, int col) {
int row = cols.size();
for (int i = 0; i < row; i++) {
if (cols.get(i) == col || Math.abs(cols.get(i) - col) == Math.abs(i - row)) {
return false;
}
}
return true;
}
}
相关文章推荐
- LeetCode---N-Queens II
- 【一天一道LeetCode】#52. N-Queens II
- leetcode:N-Queens II 的位运算非递归解法
- [Leetcode] N-Queens II
- LeetCode 52 N-Queens II (DFS)
- LeetCode N-Queens II
- 【LeetCode with Python】 N-Queens II
- leetcode N-Queens II
- leetcode hard模式专杀之52 N-Queens II
- Leetcode---N-Queens II
- [leetcode]52. N-Queens II
- [leetcode]N-Queens II
- LeetCode: N-Queens II
- LeetCode N-Queens II
- N-Queens II - LeetCode
- 【Leetcode】【python】N-Queens/N-Queens II
- 【Leetcode】N-Queens II (Backtracking)
- Leetcode: N-Queens II
- N-Queens II--LeetCode
- Leetcode-N-Queens II