n皇后问题JS实现(N-Queens)
生活随笔
收集整理的這篇文章主要介紹了
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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: django系列 1 :python+d
- 下一篇: pip安装拓展包--网络超时/Read