【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相关推荐

  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

    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. 51. N皇后/52. N皇后 II

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

最新文章

  1. Smartforms 在sap系统设置纸张打印格式
  2. 蚂蚁动态卡片,让App首页实现敏捷更新
  3. 表修改语法之列的增删改
  4. javascript学习笔记_function
  5. java 数组详解_java_day03:数组详解
  6. url动态追加参数_领高舆情优化:SEO网站URL优化的方法!
  7. 传输层TCP(流量控制和拥塞控制)
  8. MySql 优化----- 慢查询
  9. PLSQL 使用技巧(快捷键/关键字等)
  10. ElasticSearch + kibana 基础查询文档大全
  11. html无法显示echarts地图,pyecharts 地图不显示问题
  12. 去除UC浏览器强制嵌入的垃圾广告代码
  13. Halcon创建文件夹
  14. 将姓名转为拼音,首字母大写
  15. 云脉H5高效纠错系统
  16. 测试 CS4344 立体声DA转换器
  17. 海康监控虚拟服务器设置,海康监控如何连接网络设置教程
  18. 【网络安全】练习与复习十二
  19. WDK学习笔记_基于区块链溯源系统的后端接口开发
  20. 治服FME之clipper转换器幺蛾子(出现丢失、多余裁剪结果)

热门文章

  1. signature=79bbe616a3c83bdce4ba49cc3bd8cb7f,来用百度密语吧!!!
  2. vue单页面标题设置 title
  3. Django实现登录、注册、修改密码、重置密码
  4. 从零开始搭建传奇服务器
  5. InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD
  6. Word 2007关闭时出现“已停止工作”的解决方法
  7. Eternalblue-2.2.0 shellcode 分析
  8. 【漏洞利用】使用永恒之蓝的双倍脉冲模块(Eternalblue_doublepulsar)渗透攻击Win_7 32位主机
  9. php输出多个html元素,PHP输出多个HTML表格
  10. BBC UK News(2022.04.15)