52. N皇后 II

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

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

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

示例:

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

["…Q.", // 解法 2
“Q…”,
“…Q”,
“.Q…”]
]

class Solution {/*** 记录某列是否已有皇后摆放*/private boolean col[];/*** 记录某条正对角线(左上右下)是否已有皇后摆放(某条对角线对应的摆放位置为 x - y + n - 1)*/private boolean dia1[];/*** 记录某条斜对角线(左下右上)是否已有皇后摆放(某条对角线对应的摆放位置为 x + y)*/private boolean dia2[];public int totalNQueens(int n) {// 依然可以使用 51 号问题的解决思路,但问题是有没有更好的方法col = new boolean[n];dia1 = new boolean[2 * n - 1];dia2 = new boolean[2 * n - 1];return putQueen(n, 0);}/*** 递归回溯方式摆放皇后** @param n     待摆放皇后个数* @param index 已摆放皇后个数*/private int putQueen(int n, int index) {int res = 0;if (index == n) {return 1;}// 表示在 index 行的第 i 列尝试摆放皇后for (int i = 0; i < n; i++) {if (!col[i] && !dia1[i - index + n - 1] && !dia2[i + index]) {// 递归col[i] = true;dia1[i - index + n - 1] = true;dia2[i + index] = true;res += putQueen(n, index + 1);// 回溯col[i] = false;dia1[i - index + n - 1] = false;dia2[i + index] = false;}}return res;}}

Java实现 LeetCode 52 N皇后 II相关推荐

  1. LeetCode 52.N皇后II

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

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

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

  3. LeetCode 52. N皇后 II

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

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

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

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

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

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

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

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

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

  8. LeetCode每日一题 52. N皇后 II

    题目链接 思路 暴搜 二进制 class Solution {public:vector<int> row, col;int totalNQueens(int n) {int ret= 0 ...

  9. Java实现 LeetCode 63 不同路径 II(二)

    63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在 ...

最新文章

  1. 考前自学系列·计算机组成原理·控制器的组成及各部分的功能
  2. go执行二进制文件的方法:通过shell脚本来调用二进制文件,直接执行go的二进制文件会存在参数传递问题
  3. C++-运行时类型信息,异常(day11)
  4. 面试题SMKJ——no.1
  5. 基于matlab的频域辨识,基于Lab VIEW的控制系统频域分析研究
  6. bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...
  7. ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
  8. MFC初步教程(一)
  9. 设计模式(一)——设计模式的七大原则
  10. NCBI数据库以及常用编号
  11. 录制电脑游戏视频的方法
  12. 可变参数宏...和__VA_ARGS__
  13. 新时代知识产权创新发展与严格保护_保护知识产权?宣传强化治理——东安街道团结社区新时代文明实践站大力宣传《知识产权法》...
  14. python爬虫面试自我介绍范文_一分钟面试自我介绍范文15篇
  15. 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
  16. vscode各种按键失效
  17. 爱奇艺自媒体平台如何入驻,被封怎么办?
  18. 如何查看电脑是什么时候购买的
  19. 切换上下首音乐功能的实现(消息订阅与发布的使用)
  20. Excel·VBA文字数字混合求和

热门文章

  1. HTML+CSS+JS—时尚服装购物商城(1页) 大学生服装购物商城网页作品 服装网页设计作业模板 学生网页制作源代码下载
  2. 互联网时代颠覆的传统行业
  3. CSS3: The missing manual 《css3秘笈》笔记+布局、设计优秀资源整理
  4. 利用高德api实现自定义区域下钻
  5. 至今见过最全的星星*龙套家族*!!! 【 图片较多 显示不了的 多刷一下即可 】
  6. 单片机加减法计算器_51单片机之4位数加法计算器的设计报告
  7. php artisan migrate,Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
  8. CSP初赛篇·知识大纲(未完成)
  9. [Alpha阶段]第十次Scrum Meeting
  10. 六零导航页 (LyLme Spage)网址导航源码