【发布时间】:2021-10-31 14:57:55
【问题描述】:
所以我正在尝试解决 N-Queens 问题,当我在求解函数中使用 console.log(result) 时,我得到了正确的输出。但是当我最后返回结果数组时,结果数组似乎根本没有发生变异,因为我得到 [[-, -, -,-], [-,-,-,-]]
function solveNQueens(n) {
let result = [];
let buffer = Array(n).fill('-');
function solve(bufferIndexRow) {
if (bufferIndexRow === n) {
result.push(buffer);
return console.log('FOUND ONE SOLUTION'); // Finished last row, filled queens array
}
for (let column = 0; column < n; column++) {
buffer[bufferIndexRow] = column;
if (isValid(bufferIndexRow, column)) {
solve(bufferIndexRow + 1);
}
buffer[bufferIndexRow] = '-'
}
}
function isValid(row, col) {
for(let i = 0; i< row; i++) {
if(buffer[i] == col || Math.abs(i - row) == Math.abs(buffer[i]- col))
return false;
}
return true;
}
solve(0);
return result;
}
console.log(solveNQueens(4));
【问题讨论】:
标签: algorithm recursion backtracking n-queens