JavaScript实现N皇后问题算法谜题解答

前端之家收集整理的这篇文章主要介绍了JavaScript实现N皇后问题算法谜题解答前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

谜题

N皇后问题。将N个皇后放置在NxN的国际象棋棋盘上,其中没有任何两个皇后处于同一行、同一列或同一对角线上,以使得它们不能互相攻击。

策略

回溯法。

JavaScript解

以8皇后问题为例:

代码如下:

function getNQueens(order) { if (order < 4) { console.log('N Queens problem apply for order bigger than 3'); return; }

var nQueens = []; var backTracking = false; rowLoop: for (var row=0; row

for (var col=0; colnQueens[row][col] = 1;
if (isQueenValid(nQueens,row,col)) {
continue rowLoop;
} else if (col == order-1) {
backTracking = true;
resetRow(nQueens,row);
row = row - 2;
continue rowLoop;
} else {
nQueens[row][col] = 0;
continue;
};
}
}

return nQueens; }

function resetRow(nQueens,row) { for (var col=0; col

function isQueenValid(nQueens,col) { for (var i=0; i

function printQueens(queens) { for (var row=0; row

var queens = getNQueens(8); printQueens(queens);

结果

代码如下:

猜你在找的JavaScript相关文章