Java实现 LeetCode 52 N皇后 II
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相关推荐
- LeetCode 52.N皇后II
[LetMeFly]52.N皇后II 力扣题目链接:https://leetcode.cn/problems/n-queens-ii/ n 皇后问题 研究的是如何将n个皇后放置在n×n的棋盘上,并且使 ...
- LeetCode—52. N皇后 II(困难)
52. N皇后 II(困难) 题目描述: n 皇后问题研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击.即令其中任意两个皇后都不同列.同行和在一条斜线上. 给你一 ...
- LeetCode 52. N皇后 II
https://leetcode-cn.com/problems/n-queens-ii/ 难度:困难 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻 ...
- leetcode 52. N皇后 II(回溯)
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回 n 皇后不同的解决方案的数量. 示例: 输入: 4 输出: 2 解释: 4 皇 ...
- LeetCode 51. N 皇后、52. N 皇后 II
51. N 皇后 n皇后问题要求皇后放置后,同一行,同一列,同一斜线上不存在其他的皇后即可 采用回溯法解决该问题 同时应该设置一个函数判断当该位置放置皇后后,是否合法 因为是采用回溯法放置皇后,每行只 ...
- LeetCode 51. N皇后 / 52. N皇后 II(回溯)
1. 题目 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案 ...
- leetcode刷题(53)——52. N皇后 II
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给定一个整数 n,返回 n 皇后不同的解决方案的数量. 示例: 输入: 4 输出: 2 解释: 4 皇 ...
- LeetCode每日一题 52. N皇后 II
题目链接 思路 暴搜 二进制 class Solution {public:vector<int> row, col;int totalNQueens(int n) {int ret= 0 ...
- Java实现 LeetCode 63 不同路径 II(二)
63. 不同路径 II 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在 ...
最新文章
- 考前自学系列·计算机组成原理·控制器的组成及各部分的功能
- go执行二进制文件的方法:通过shell脚本来调用二进制文件,直接执行go的二进制文件会存在参数传递问题
- C++-运行时类型信息,异常(day11)
- 面试题SMKJ——no.1
- 基于matlab的频域辨识,基于Lab VIEW的控制系统频域分析研究
- bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...
- ROS学习手记 - 5 理解ROS中的基本概念_Services and Parameters
- MFC初步教程(一)
- 设计模式(一)——设计模式的七大原则
- NCBI数据库以及常用编号
- 录制电脑游戏视频的方法
- 可变参数宏...和__VA_ARGS__
- 新时代知识产权创新发展与严格保护_保护知识产权?宣传强化治理——东安街道团结社区新时代文明实践站大力宣传《知识产权法》...
- python爬虫面试自我介绍范文_一分钟面试自我介绍范文15篇
- 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
- vscode各种按键失效
- 爱奇艺自媒体平台如何入驻,被封怎么办?
- 如何查看电脑是什么时候购买的
- 切换上下首音乐功能的实现(消息订阅与发布的使用)
- Excel·VBA文字数字混合求和
热门文章
- HTML+CSS+JS—时尚服装购物商城(1页) 大学生服装购物商城网页作品 服装网页设计作业模板 学生网页制作源代码下载
- 互联网时代颠覆的传统行业
- CSS3: The missing manual 《css3秘笈》笔记+布局、设计优秀资源整理
- 利用高德api实现自定义区域下钻
- 至今见过最全的星星*龙套家族*!!! 【 图片较多 显示不了的 多刷一下即可 】
- 单片机加减法计算器_51单片机之4位数加法计算器的设计报告
- php artisan migrate,Laravel php artisan 自动生成Model+Migrate+Controller 命令大全
- CSP初赛篇·知识大纲(未完成)
- [Alpha阶段]第十次Scrum Meeting
- 六零导航页 (LyLme Spage)网址导航源码