国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - JavaScript實現N皇后問題算法謎題解答

JavaScript實現N皇后問題算法謎題解答

2021-06-08 16:45junjie JavaScript

這篇文章主要介紹了JavaScript實現N皇后問題算法謎題解答,N皇后問題是指將N個皇后放置在NxN的國際象棋棋盤上,其中沒有任何兩個皇后處于同一行、同一列或同一對角線上,以使得它們不能互相攻擊,需要的朋友可以參考下

謎題

N皇后問題。將N個皇后放置在NxN的國際象棋棋盤上,其中沒有任何兩個皇后處于同一行、同一列或同一對角線上,以使得它們不能互相攻擊。

策略

回溯法。

JavaScript解

以8皇后問題為例:

復制代碼 代碼如下:

/**
 * Created by cshao on 12/28/14.
 */

 

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<order; row++) {
    if (nQueens[row] === undefined) {
      nQueens[row] = [];
    }

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

  return nQueens;
}

function resetRow(nQueens, order, row) {
  for (var col=0; col<order; col++) {
    nQueens[row][col] = undefined;
  }
}

function isQueenValid(nQueens, row, col) {
  for (var i=0; i<col; i++) {
    if (nQueens[row][i] == 1) {
      return false;
    }
  }
  for (var j=1; j<row+1; j++) {
    if (nQueens[row-j][col]==1 || (nQueens[row-j][col-j]!=undefined && nQueens[row-j][col-j]==1) || (nQueens[row-j][col+j]!=undefined && nQueens[row-j][col+j]==1)) {
      return false;
    }
  }
  return true;
}

function printQueens(queens) {
  for (var row=0; row<queens.length; row++) {
    var rowText = '';
    for (var col=0; col<queens.length; col++) {
      if (queens[row][col]===undefined) {
        queens[row][col] = 0;
      }
      rowText = rowText + queens[row][col] + '  ';
    }
    console.log(rowText);
  }
}

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

 

結果

 

復制代碼 代碼如下:

1  0  0  0  0  0  0  0 
0  0  0  0  1  0  0  0 
0  0  0  0  0  0  0  1 
0  0  0  0  0  1  0  0 
0  0  1  0  0  0  0  0 
0  0  0  0  0  0  1  0 
0  1  0  0  0  0  0  0 
0  0  0  1  0  0  0  0

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美专区在线观看 | 亚洲精品一区二区三区蜜桃久 | 欧美日韩在线一区 | 亚洲精品视频在线 | 日韩激情一区二区 | 亚洲视频在线一区 | 中文字幕国产视频 | 久久精品国产99国产精品 | 亚洲精品一区二区三区蜜桃久 | 日韩国伦理久久一区 | 韩日av片 | 91在线高清观看 | 日韩国产欧美视频 | 日韩成人片 | 久久美女 | 精品一区二区三区四区 | 国产精品美女久久久久久免费 | 亚洲视频一区在线观看 | 日韩欧美精品在线 | 亚洲视频一区在线 | 午夜精品一区二区三区在线观看 | 高清一区二区三区 | 亚洲综合国产 | 亚洲精品福利 | 日韩电影一区二区三区 | 91精品国产91久久综合桃花 | 欧美 日韩 中文 | 日韩国产一区二区 | 久久久精品 | 国产欧美日韩视频 | 国产精品一区二区三区免费 | 鲁一鲁av| 久久精品国产99国产精品 | 亚洲综合中文 | 欧美在线综合 | 成人精品鲁一区一区二区 | 成av在线| 亚洲天堂黄色 | 伊人3 | 精品久久久久久久久久久久 | 成人在线观看日韩 |