/**
*
* @param n int整型 the n
* @return int整型
*/
function Nqueen(n) {
// write code here
let ans = 0;
// 皇后下标行的列下标
let queen = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
// x是当前行,y是当前测试列
function check(x, y) {
// i是之前皇后的行,queen[i]是之前皇后的列
for (let i = 0; i < x; i++) {
if (i == x || queen[i] == y || Math.abs(y - queen[i]) == Math.abs(x - i)) {
return false;
}
}
return true;
}
function dfs(i) {
if (i == n) {
++ans;
return;
}
// 测试所有列
for (let j = 0; j < n; ++j) {
if (check(i, j)) {
queen[i] = j;
dfs(i + 1);
}
}
}
dfs(0);
return ans;
}
module.exports = {
Nqueen: Nqueen
};