日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

n皇后问题JS实现(N-Queens)

發(fā)布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 n皇后问题JS实现(N-Queens) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

n皇后問題作為經(jīng)典的面試題,今天在LeetCode刷到,解法比較直接,回溯遞歸。其他解法咱也不會。。。。

Leetcode地址:https://leetcode.com/problems/n-queens/description/

n皇后問題:在n*n的棋盤格中放置那個棋子,使得這n個棋子不在同一行,不在同一列,不在同一對角線,不在同一斜對角線上,找出所有可行的結果集。

解題思路:1.先把回溯算法寫出來

     2.用一個數(shù)組儲存臨時結果,寫個函數(shù)判斷該棋子所在位置是否符合要求。

代碼如下:

/*** @param {number} n* @return {string[][]}*/
//回溯
var solveNQueens = function(n) {var res=[];var curr=[];//臨時儲存其中一個結果for(var i=0;i<n;i++){curr[i]=new Array();for(var j=0;j<n;j++){curr[i][j]='.'}}backtrack(curr,res,0)return res;
};
var backtrack = function(curr,res,row){if(curr.length===row){var c=[];for(var i=0;i<curr.length;i++){c.push(curr[i].join(''));}res.push(c);return ;}//遍歷每一行所有元素for(var col=0;col<curr.length;col++){//判斷該位置是否有效if(isValid(row,col,curr)){curr[row][col]="Q"backtrack(curr,res,row+1);curr[row][col]="."}}};
var isValid=function(row,col,curr){for(var i=0;i<row;i++)//if(curr[i][col]==='Q') return false;for(var i=row-1,j=col-1;i>=0 && j>=0;i--,j--)//對角線if(curr[i][j]==="Q") return false;//斜對角線for(var i=row-1,j=col+1;i>=0 && j<curr.length ; i--,j++){if(curr[i][j]==="Q") return false;}return true;};

?

轉載于:https://www.cnblogs.com/xingguozhiming/p/9572361.html

總結

以上是生活随笔為你收集整理的n皇后问题JS实现(N-Queens)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。