题解 | N皇后问题
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型 the n
* @return int整型
*/
public int total = 0;
public int Nqueen (int n) {
// write code here
if (n == 0) return 0;
boolean[] column = new boolean[n];
boolean[] idx1 = new boolean[2 * n - 1];
boolean[] idx2 = new boolean[2 * n - 1];
recursionQueen(0, n, column, idx1, idx2);
return total;
}
public void recursionQueen(int rows, int n, boolean[] col,
boolean[] idx1, boolean[] idx2) {
if (rows == n) {
total++;
return;
}
for (int i = 0; i < n; i++) {
int idx1Pos = i + rows;
int idx2Pos = i - rows + n - 1;
if (col[i] || idx1[idx1Pos] || idx2[idx2Pos]) continue;
col[i] = true;
idx1[idx1Pos] = true;
idx2[idx2Pos] = true;
recursionQueen(rows + 1, n, col, idx1, idx2);
col[i] = false;
idx1[idx1Pos] = false;
idx2[idx2Pos] = false;
}
}
}

