把合适的位置用数组表示【row,col】,然后把路径存在了p中,所以p为二维数组,此篇只提供思路,有需要的同学可以尝试把二维数组转化为符合题目的字符串
var solveNQueens = function(n) { let arr=[] let p=[] const dd=function(row,p){ if(row==n){ arr.push([...p]) return } //遍历当前行 for(let col=0;col<n;col++){ if(!ishf(row,col,p)){ continue } p.push([row,col]) dd(row+1,p) //搜索下一行 p.pop() } } dd(0,p) return arr } //判断是否合法 const ishf=function(row,col,p){ //遍历p中的节点 for(let [row1,col1] of p){ //不能同行 if(row==row1){ return false } //不能同列 if(col==col1){ return false } //不能在斜角 if(Math.abs(row-row1)==Math.abs(col-col1)){ return false } } return true }