皇后问题研究的是如何将 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) {
        int solutions = 0;  
        vector<int> queue(n, -1);  
        recursiveFun(solutions, queue, n, 0);  
        return solutions; 
    }
    void recursiveFun(int &solutions, vector<int> &queue, int n, int row)  
    {  
        if (row >= n)  
        {  
            ++solutions;  
        }  
        else
        {  
            for (int j = 0; j < n; ++j)  
            {  
                if (isValid(queue, row, j))  
                {  
                    queue[row] = j;  
                    recursiveFun(solutions, queue, n, row + 1);  
                }  
            } 
        }
    } 
    bool isValid(vector<int> queue, int r, int c)  
    {  
        if (queue.empty())  
            return true;  
        for (int i = 0; i < r; ++i)  
        {  
            if (queue[i] == c || abs(i - r) == abs(queue[i] - c))  
                return false;  
        } 
        return true;  
    } 
};

52. N皇后 II相关推荐

  1. Java实现 LeetCode 52 N皇后 II

    52. N皇后 II n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回 n 皇后不同的解决方案 ...

  2. LeetCode—52. N皇后 II(困难)

    52. N皇后 II(困难) 题目描述: n 皇后问题研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击.即令其中任意两个皇后都不同列.同行和在一条斜线上. 给你一 ...

  3. LeetCode 52.N皇后II

    [LetMeFly]52.N皇后II 力扣题目链接:https://leetcode.cn/problems/n-queens-ii/ n 皇后问题 研究的是如何将n个皇后放置在n×n的棋盘上,并且使 ...

  4. LeetCode 51. N 皇后、52. N 皇后 II

    51. N 皇后 n皇后问题要求皇后放置后,同一行,同一列,同一斜线上不存在其他的皇后即可 采用回溯法解决该问题 同时应该设置一个函数判断当该位置放置皇后后,是否合法 因为是采用回溯法放置皇后,每行只 ...

  5. LeetCode 51. N皇后 / 52. N皇后 II(回溯)

    1. 题目 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案 ...

  6. LeetCode 52. N皇后 II

    https://leetcode-cn.com/problems/n-queens-ii/ 难度:困难   n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻 ...

  7. leetcode 52. N皇后 II(回溯)

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回 n 皇后不同的解决方案的数量. 示例: 输入: 4 输出: 2 解释: 4 皇 ...

  8. 51. N皇后/52. N皇后 II

    2020-07-29 1.题目描述 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 2.题解 回溯算法 3.代码 class Solution {pu ...

  9. 领扣 52. N皇后 II

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回 n 皇后不同的解决方案的数量. 位运算解法 0ms (注:将设想的棋盘视为从右 ...

  10. leetcode刷题(53)——52. N皇后 II

    n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回 n 皇后不同的解决方案的数量. 示例: 输入: 4 输出: 2 解释: 4 皇 ...

最新文章

  1. Machine Learning | (6) Scikit-learn的分类器算法-性能评估
  2. php ckey=6,ThinkPHP6 核心分析(十):事件
  3. Java基础day18
  4. 计算机专业答辩模板,论文答辩模板-计算机专业.ppt
  5. Flex in a Week video training
  6. JSON-B和Yasson详解
  7. 作业调度之先来先服务算法C语言实现
  8. cimoc 最新版_Cimoc1.49版下载
  9. java 导出word_java导出生成word
  10. 80004005错误代码_80004005错误代码怎么回事_安装软件错误代码0×80004005如何解决...
  11. 桌面图标变白,任务栏图标变白
  12. TextRank算法原理简析、代码实现
  13. eclipse配置tomcat9.0
  14. Ubuntu18.04下的截图快捷方式
  15. MySql数据的完整性
  16. 酸奶糖酸比的计算机控制,PAL-BX丨ACID F5 五种水果糖酸度计
  17. android炫酷的动画效果
  18. 数据结构(C)必会知识点+易错点:数组和广义表(n维数组地址计算公式,特殊矩阵对称矩阵的存储,广义表的表示方法)
  19. c35是什么意思_混凝土标号怎么来的?C30_C25_C35_都是什么意思
  20. jquery+ajax实现分页功能

热门文章

  1. “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
  2. KindEditor富文本编辑从数据库取出来内容回显在页面上会自动增加行间距以及回车换行会自动间距变大的问题...
  3. 魅族手机便签里的备忘录内容如何导出到华为手机上?
  4. ERP系统“数字排产”功能,实现企业高效排产
  5. flex与j2ee的结合(flex+Spring)
  6. C# EF6 更新对象
  7. Centos6 安装 Redis 和集群配置
  8. android 组件内部实现触摸事件,更改背景
  9. iPad 2 移植 Siri 常见问题解答及注意事项
  10. android荧光进度条,Android ProgressBar 进度条荧光效果