LeetCode
52. N皇后 II
返回n皇后不同的解决方案的数量。不需要返回真正的解,更简单一些。
int solutionCount = 0;int n;int[] columns;int[] diagonals1;int[] diagonals2;public int totalNQueens(int n) {this.n = n;columns = new int[n];//i+jdiagonals1 = new int[2*n-1];//j-idiagonals2 = new int[2*n-1];backtrack(0);return solutionCount;}private void backtrack(int r) {if (r == n) {solutionCount++;return ;}for (int c = 0; c < n; c++) {if (!legal(r, c)) continue;place(r, c, 1);backtrack(r + 1);place(r, c, 0);}}private boolean legal(int r, int c) {return columns[c] == 0 && diagonals1[r + c] == 0 && diagonals2[c - r + n - 1] == 0;}private void place(int r, int c, int target) {columns[c] = target;diagonals1[r + c] = target;diagonals2[c - r + n - 1] = target;}
