/** * @param {number} n * @return {number} */
var totalNQueens = function(n) {
let ans = 0;
let col = new Array(n);
let d = new Array(2 * n - 1).fill(false); // 每一列只能有一個皇后
let ud = new Array(2 * n - 1).fill(false);
dfs(0);
return ans;
function dfs(u) {
if(u === n) {
ans++;
return;
}
for(let i = 0; i < n; i++){
if(!col[i] && !d[i + u] && !ud[i - u + n]) {
col[i] = d[i + u] = ud[i - u + n] = true;
dfs(u + 1);
// 重置狀態
col[i] = d[i + u] = ud[i - u + n] = false;
}
}
}
};
複製代碼