编辑代码

function solveNQueens(n) {
    const board = Array.from({ length: n }, () => Array(n).fill(0));
    const result = [];
    function isSafe(row, col) {
        for (let i = 0; i < row; i++) {
            if (board[i][col] === 1) {
                return false;
            }
        }
        for (let i = row, j = col; i >= 0 && j >= 0; i--, j--) {
            if (board[i][j] === 1) {
                return false;
            }
        }
        for (let i = row, j = col; i >= 0 && j < n; i--, j++) {
            if (board[i][j] === 1) {
                return false;
            }
        }
        return true;
    }
    function backtrack(row) {
        if (row === n) {
            result.push(board.map(row => row.slice()));
            return;
        }

        for (let col = 0; col < n; col++) {
            if (isSafe(row, col)) {
                board[row][col] = 1;
                backtrack(row + 1);
                board[row][col] = 0;
            }
        }
    }
    backtrack(0);
    return result;
}
const solutions = solveNQueens(4);
console.log(solutions);