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