function solveNQueens(n) {
const board = new Array(n).fill(0).map(() => new Array(n).fill("."));
const res = [];
backtrack(0);
return res;
function isValid(row, col) {
for (let i = 0; i < n; i++) {
if (board[i][col] === "Q") return false;
}
for (let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) {
if (board[i][j] === "Q") return false;
}
for (let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) {
if (board[i][j] === "Q") return false;
}
return true;
}
function backtrack(row) {
if (row === board.length) {
res.push(board.map((row) => row.join("")));
return;
}
for (let col = 0; col < n; col++) {
if (!isValid(row, col)) {
continue;
}
board[row][col] = "Q";
backtrack(row + 1);
board[row][col] = ".";
}
}
}
console.log(solveNQueens(4));