/** * @param {number} n * @return {string[][]} */let result = [];var solveNQueens = function(n) { result = []; let board = []; for (let i = 0; i < n; i++) { board[i] = []; for (let j = 0; j < n; j++) { board[i][j] = '.' } } backtrack(0, board, n); return result;};function deepClone(board) { let res = []; for (let i = 0; i < board.length; i++) { res.push(board[i].join('')); } return res;}function backtrack(row, board, n) { if (row === n) { result.push(deepClone(board)); return; } for (let j = 0; j < n; j++) { if (checkInValid(board, row, j, n)) continue; board[row][j] = 'Q'; backtrack(row + 1, board, n); board[row][j] = '.'; }}function checkInValid(board, row, column, n) { // 行 for (let i = 0; i < n; i++) { if (board[i][column] === 'Q') return true; } for (let i = row - 1, j = column + 1; i >= 0 && j < n; i--, j++) { if (board[i][j] === 'Q') return true; } for (let i = row - 1, j = column - 1; i >= 0 && j >= 0; i--, j--) { if (board[i][j] === 'Q') return true; } return false;}