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;
        }
    }

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号