Javascript 打印N-Queen问题的所有解
N皇后是将N个国际象棋皇后放置在N×N棋盘上的问题,这样就不会有两个皇后互相攻击。例如,下面是4皇后问题的解决方案 N皇后是将N个国际象棋皇后放置在N×N棋盘上的问题,这样就不会有两个皇后互相攻击 我写了函数,但它是只打印一个解决方案。如何更新此函数以打印所有解决方案 皇后是“q”,空值是“-”Javascript 打印N-Queen问题的所有解,javascript,algorithm,recursion,Javascript,Algorithm,Recursion,N皇后是将N个国际象棋皇后放置在N×N棋盘上的问题,这样就不会有两个皇后互相攻击。例如,下面是4皇后问题的解决方案 N皇后是将N个国际象棋皇后放置在N×N棋盘上的问题,这样就不会有两个皇后互相攻击 我写了函数,但它是只打印一个解决方案。如何更新此函数以打印所有解决方案 皇后是“q”,空值是“-” 函数查找所有排列(n){ 常数allRes=[]; 功能有效(行、列、板){ //检查← 方向 对于(变量i=0;i=0&&j>=0;i--,j--){ 如果(板[i][j]=“q”){ 返回false
函数查找所有排列(n){
常数allRes=[];
功能有效(行、列、板){
//检查← 方向
对于(变量i=0;i=0&&j>=0;i--,j--){
如果(板[i][j]=“q”){
返回false;
}
}
//检查↙ 方向
对于(var i=row,j=col;j>=0&&i,只需修改find函数以克隆结果数组,并对回溯进行一些调整:
function find(col, result) {
if (col === n) {
// this deep clone the 2d array
allRes.push(JSON.parse(JSON.stringify(result)));
return;
}
for (let i = 0; i < n; i++) {
if (isValid(i, col, result)) {
result[i][col] = "q";
find(col + 1, result)
result[i][col] = "-";
}
}
}
函数查找(列、结果){
如果(列===n){
//这是对2d阵列的深度克隆
allRes.push(JSON.parse(JSON.stringify(result));
返回;
}
for(设i=0;i
差不多了,只需修改find函数以克隆结果数组,并对回溯进行一些调整:
function find(col, result) {
if (col === n) {
// this deep clone the 2d array
allRes.push(JSON.parse(JSON.stringify(result)));
return;
}
for (let i = 0; i < n; i++) {
if (isValid(i, col, result)) {
result[i][col] = "q";
find(col + 1, result)
result[i][col] = "-";
}
}
}
函数查找(列、结果){
如果(列===n){
//这是对2d阵列的深度克隆
allRes.push(JSON.parse(JSON.stringify(result));
返回;
}
for(设i=0;i
谢谢!我尝试使用arr.slice()代替JSON,但似乎它只适用于1d数组谢谢!我尝试使用arr.slice()代替JSON,但似乎它只适用于1d数组