LeetCode 52.N皇后II
【LetMeFly】52.N皇后II
力扣题目链接:https://leetcode.cn/problems/n-queens-ii/
n 皇后问题 研究的是如何将n
个皇后放置在n×n
的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数n
,返回所有不同的 n 皇后问题的解决方案的数量。
每一种解法包含一个不同的 n 皇后问题的棋子放置方案,该方案中'Q'
和'.'
分别代表了皇后和空位。
笔者注:
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子
这个可能一些中国小朋友不知道,因此已经在Github提交issue啦
示例 1:
输入:n = 4
输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]]
解释:如上图所示,4 皇后问题存在两个不同的解法。
示例 2:
输入:n = 1
输出:[["Q"]]
提示:
- 1 ≤ n ≤ 9 1\leq n\leq 9 1≤n≤9
题目大意
这题与“LeetCode 51.N皇后”不同之处在于,此题不需要返回具体答案状态是什么,只需要返回答案数量即可。
思路
具体思路方法请见 https://leetcode.letmefly.xyz/2022/05/27/LeetCode 0051.N皇后/
我们可以小修改LeetCode 51.N皇后的代码:
首先不需要用字符表示棋盘了,我们可以使用布尔类型的数据来表示棋盘。true代表皇后,false代表空。
其次,我们不需要返回具体状态是什么了,因此只需要计数即可。
方法一:回溯
下面是具体实现,可多关注与LeetCode 51.N皇后的不同之处。
- 时间复杂度 O ( n ! ) O(n!) O(n!)
- 空间复杂度 O ( n ) O(n) O(n)
AC代码
C++
class Solution {private:bool a[9][9] = {false};int ans = 0;int n;bool ifOk(int x, int y) { // 往(x, y)放置一个皇后是否可行for (int j = 0; j < n; j++) {if (a[x][j]) {return false;}}for (int i = 0; i < n; i++) {if (a[i][y]) {return false;}}for (int i = 0; i < n; i++) {// i + j = x + yint j = x + y - i;if (j >= 0 && j < n && a[i][j]) {return false;}// i - j = x - yj = i - x + y;if (j >= 0 && j < n && a[i][j]) {return false;}}return true;}void goon(int line) { // 该放第line行了if (line >= n) {ans++;return;}for (int j = 0; j < n; j++) {if (ifOk(line, j)) {a[line][j] = true;goon(line + 1);a[line][j] = false;}}}
public:int totalNQueens(int n) {this->n = n;goon(0);return ans;}
};
Java
LeetCode 52.N皇后II相关推荐
- Java实现 LeetCode 52 N皇后 II
52. N皇后 II n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 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 ...
- 51. N皇后/52. N皇后 II
2020-07-29 1.题目描述 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 2.题解 回溯算法 3.代码 class Solution {pu ...
最新文章
- Smartforms 在sap系统设置纸张打印格式
- 蚂蚁动态卡片,让App首页实现敏捷更新
- 表修改语法之列的增删改
- javascript学习笔记_function
- java 数组详解_java_day03:数组详解
- url动态追加参数_领高舆情优化:SEO网站URL优化的方法!
- 传输层TCP(流量控制和拥塞控制)
- MySql 优化----- 慢查询
- PLSQL 使用技巧(快捷键/关键字等)
- ElasticSearch + kibana 基础查询文档大全
- html无法显示echarts地图,pyecharts 地图不显示问题
- 去除UC浏览器强制嵌入的垃圾广告代码
- Halcon创建文件夹
- 将姓名转为拼音,首字母大写
- 云脉H5高效纠错系统
- 测试 CS4344 立体声DA转换器
- 海康监控虚拟服务器设置,海康监控如何连接网络设置教程
- 【网络安全】练习与复习十二
- WDK学习笔记_基于区块链溯源系统的后端接口开发
- 治服FME之clipper转换器幺蛾子(出现丢失、多余裁剪结果)
热门文章
- signature=79bbe616a3c83bdce4ba49cc3bd8cb7f,来用百度密语吧!!!
- vue单页面标题设置 title
- Django实现登录、注册、修改密码、重置密码
- 从零开始搭建传奇服务器
- InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD
- Word 2007关闭时出现“已停止工作”的解决方法
- Eternalblue-2.2.0 shellcode 分析
- 【漏洞利用】使用永恒之蓝的双倍脉冲模块(Eternalblue_doublepulsar)渗透攻击Win_7 32位主机
- php输出多个html元素,PHP输出多个HTML表格
- BBC UK News(2022.04.15)