N皇后——简单有效DFS
N皇后
给你一个整数 n
,返回所有不同的 n 皇后问题 的解决方案。
示例:
输入:4
返回值:2
示例:
输入:8
返回值:92
代码:
判断两个皇后冲突:Math.abs(x1 - x2) == Math.abs(y1 - y2)
public class Solution {
int sum;
int a[] = new int[10];
public void dfs(int k, int n) {
if (k == n) { sum++;
return; }
for (int i = 0; i < n; i++) { //遍历k行的n个位置
int j;
for (j = 0; j < k; j++) { //检查冲突
if (a[j] == i || Math.abs(a[j] - i) == Math.abs(k - j)) {
break;
}
}
if (j == k) {
a[k] = i;
dfs(k + 1, n);
}
}
}
public int Nqueen(int n) {
sum = 0;
dfs(0, n);
System.out.println(Arrays.toString(a));
return sum;
}
}