码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode#52 N queensⅡ

时间:2018-10-08 18:13:27      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:说明   img   攻击   输出   image   如何   color   研究   并且   

皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。

技术分享图片

上图为 8 皇后问题的一种解法。

给定一个整数 n,返回 n 皇后不同的解决方案的数量。

示例:

输入: 4
输出: 2
解释: 4 皇后问题存在如下两个不同的解法。
[
 [".Q..",  // 解法 1
  "...Q",
  "Q...",
  "..Q."],

 ["..Q.",  // 解法 2
  "Q...",
  "...Q",
  ".Q.."]
]

class Solution {
public:
    int totalNQueens(int n) 
    {
        return queen(0,0,0,0,0,n);       
    }
    //l,r,d是左右竖线的控制范围
    int queen(int answer, int deep, int l, int d,int r,int n)
    {
        if (deep == n)//deep当前深度==皇后数,我们按行填皇后,所以deep其实还代表行数0-7.8说明已填满n皇后
            return answer + 1;
        for (int i = 0; i < n; ++i)//再当前deep依次放入皇后
        {           
            if (((1 << i) & l) || ((1 << i)&d) || ((1 << i)&r))
                continue;
            answer = queen(answer, deep + 1, (l << 1) | (1 << (i + 1)), d | (1 << i), (r >> 1) | (1 <<( i - 1)),n);    
        }
        return answer;
    }
};

 

leetcode#52 N queensⅡ

标签:说明   img   攻击   输出   image   如何   color   研究   并且   

原文地址:https://www.cnblogs.com/lsaejn/p/9755584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!