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