function solveNQueens(n) {
const res = [];
const board = Array.from({ length: n }, () => Array.from({ length: n }, () => '.'));
const cols = new Set();
const diag1 = new Set();
const diag2 = new Set();
function backtrack(row) {
if (row === n) {
res.push(board.map((r) => r.join('')));
return;
}
for (let col = 0; col < n; col++) {
if (cols.has(col) || diag1.has(col - row) || diag2.has(col + row)) {
continue;
}
board[row][col] = 'Q';
cols.add(col);
diag1.add(col - row);
diag2.add(col + row);
backtrack(row + 1);
board[row][col] = '.';
cols.delete(col);
diag1.delete(col - row);
diag2.delete(col + row);
}
}
backtrack(0);
return res;
}
console.log(solveNQueens(8));