function isValid(row, col, n, chessboard) {
for (var i = 0; i < row; i++) {
if (chessboard[i][col] == 'Q')
return false;
}
for (var i = row - 1, j = col + 1; i >= 0 && j < n; i-- , j++) {
if (chessboard[i][j] == 'Q')
return false;
}
for (var i = row - 1, j = col - 1; i >= 0 && j >= 0; i-- , j--) {
if (chessboard[i][j] == 'Q')
return false;
}
return true;
}
function Queen(n, row) {
var result = [];
var chessboard = new Array(n);
for (var i = 0; i < chessboard.length; i++) {
chessboard[i] = new Array(n).fill('.');
}
backtracking(n, row, chessboard, result);
result.forEach(function (value) {
value.forEach(function(q){
console.log(q);
})
console.log('\n');
});
}
function backtracking(n, row, chessboard, result) {
if (row == n) {
result.push(JSON.parse(JSON.stringify(chessboard)));
return;
}
for (var col = 0; col < n; col++) {
if (isValid(row, col, n, chessboard)) {
chessboard[row][col] = 'Q';
backtracking(n, row + 1, chessboard, result);
chessboard[row][col] = '.';
}
}
}
var n = 8;
Queen(n, 0);
console