力扣51. N 皇后(JavaScript)

把合适的位置用数组表示【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
}

上一篇:SpringMVC:完全注解开发。


下一篇:2n皇后问题C语言实现