From 3fa29e0786546f6b9bd19567294af4445034ce26 Mon Sep 17 00:00:00 2001 From: fusunx <1102654482@qq.com> Date: Mon, 24 May 2021 07:57:14 +0800 Subject: [PATCH] =?UTF-8?q?0051N=E7=9A=87=E5=90=8E.md=20Javascript?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "problems/0051.N\347\232\207\345\220\216.md" | 59 ++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git "a/problems/0051.N\347\232\207\345\220\216.md" "b/problems/0051.N\347\232\207\345\220\216.md" index 684c70b134..f6183bbfe3 100644 --- "a/problems/0051.N\347\232\207\345\220\216.md" +++ "b/problems/0051.N\347\232\207\345\220\216.md" @@ -430,6 +430,65 @@ func solveNQueens(n int) [][]string { } ``` +Javascript: +``` +var solveNQueens = function(n) { + function isValid(row, col, chessBoard, n) { + + for(let i = 0; i < row; i++) { + if(chessBoard[i][col] === 'Q') { + return false + } + } + + for(let i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) { + if(chessBoard[i][j] === 'Q') { + return false + } + } + + for(let i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) { + if(chessBoard[i][j] === 'Q') { + return false + } + } + return true + } + + function transformChessBoard(chessBoard) { + let chessBoardBack = [] + chessBoard.forEach(row => { + let rowStr = '' + row.forEach(value => { + rowStr += value + }) + chessBoardBack.push(rowStr) + }) + + return chessBoardBack + } + + let result = [] + function backtracing(row,chessBoard) { + if(row === n) { + result.push(transformChessBoard(chessBoard)) + return + } + for(let col = 0; col < n; col++) { + if(isValid(row, col, chessBoard, n)) { + chessBoard[row][col] = 'Q' + backtracing(row + 1,chessBoard) + chessBoard[row][col] = '.' + } + } + } + let chessBoard = new Array(n).fill([]).map(() => new Array(n).fill('.')) + backtracing(0,chessBoard) + return result + +}; +``` + -----------------------