编辑代码

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)); // 输出所有可能的解决方案