当前位置: 首页 > news >正文

52. N 皇后 II【 力扣(LeetCode) 】

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


52. N 皇后 II

一、题目描述

  n 皇后问题 研究的是如何将 n 个皇后放置在 n × n 的棋盘上,并且使皇后彼此之间不能相互攻击。【补充:不能互相攻击就是要求一个皇后的同行、同列、同斜线都不能存在其他皇后】

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

二、测试用例

示例 1:

输入:n = 4
输出:2
解释:如上图所示,4 皇后问题存在两个不同的解法。

示例 2:

输入:n = 1
输出:1

提示:

1 <= n <= 9

三、解题思路

  1. 基本思路:
      回溯+剪枝
  2. 具体思路:
    • 每一行必定唯一存在一个皇后,所以确定皇后位置只要同一行确定即可【剪枝】
    • 每行尝试放置皇后,放置成功则将同列,同斜线的值++【因为是一行一行来放置皇后,所以可以设置值时可以不用设置当前行上面的】
    • 如果放置失败,则恢复状态;

四、参考代码

时间复杂度: O ( n ! ) \Omicron(n!) O(n!)
空间复杂度: O ( n ) \Omicron(n) O(n)【递归栈的深度最高为 n】

class Solution {
public:vector<vector<int>> board = vector<vector<int>>(10, vector<int>(10, 0));int ans = 0, n;void Set(const int& x, const int& y, const int& num) {for (int i = x + 1; i < n; i++) {board[i][y] += num;}auto nx = x, ny = y;while (nx < n && ny < n) {board[nx++][ny++] += num;}nx = x, ny = y;while (nx < n && 0 <= ny) {board[nx++][ny--] += num;}}void dfs(const int& k) {if (k == n) {ans++;return;}for (int i = 0; i < n; i++) {if (board[k][i] == 0) {Set(k, i, 1);dfs(k + 1);Set(k, i, -1);}}}int totalNQueens(int n) {this->n = n;dfs(0);return ans;}
};

文章转载自:

http://0MDtFxDd.hmktd.cn
http://fFHqfoNW.hmktd.cn
http://dHjNnt0z.hmktd.cn
http://U87zNK5L.hmktd.cn
http://wJkcWqnw.hmktd.cn
http://YQR9Ee3T.hmktd.cn
http://oMtAgBln.hmktd.cn
http://dvySKhvS.hmktd.cn
http://AOoa7L3X.hmktd.cn
http://y5cvx8TH.hmktd.cn
http://464L7JVS.hmktd.cn
http://YrJhOezB.hmktd.cn
http://cB98Drmp.hmktd.cn
http://Dc1DdnYa.hmktd.cn
http://zkF03ZOr.hmktd.cn
http://Rbb9wiiy.hmktd.cn
http://TpgvrYpo.hmktd.cn
http://MHIsX1bQ.hmktd.cn
http://7Nt574b3.hmktd.cn
http://uO7SDyWc.hmktd.cn
http://3ECck3pS.hmktd.cn
http://I4kTG80J.hmktd.cn
http://pmtggpr0.hmktd.cn
http://jQRQvyC5.hmktd.cn
http://ge5dFJ6d.hmktd.cn
http://5QH4ucp1.hmktd.cn
http://h7RXz2Va.hmktd.cn
http://mgX60N4E.hmktd.cn
http://GL4Xv3PC.hmktd.cn
http://OGBgAqsT.hmktd.cn
http://www.dtcms.com/a/228657.html

相关文章:

  • 涂装协作机器人:重新定义涂装工艺的智能化未来
  • Spring Cloud Eureka:微服务架构中的服务注册与发现核心组件
  • 网络安全:钓鱼邮件、虚假网站与诈骗信息的预防与应对
  • DPO 算法
  • 大模型模型推理的成本过高,如何进行量化或蒸馏优化
  • [概率论基本概念4]什么是无偏估计
  • VR线上展厅特点分析与优势
  • 阿里云无影云桌面深度测评
  • centos挂载目录满但实际未满引发系统宕机
  • 婚恋小程序直播系统框架搭建
  • 图解深度学习 - 激活函数和损失函数
  • 1130 - Host ‘xxx.x.xx.xxx‘is not allowed to connect to this MySQL server
  • 【JAVA版】意象CRM客户关系管理系统+uniapp全开源
  • 一、核心概念深入解析
  • 使用seaborn/matplotlib定制好看的confusion matrix
  • linux安全加固(非常详细)
  • 产品更新丨谷云科技ETLCloud 3.9.3 版本发布
  • Redis中的fork操作
  • Linux 软件安装方式全解(适用于 CentOS/RHEL 系统)
  • 解决 idea提示`SQL dialect is not configured` 问题
  • 面试经验 对常用 LLM 工具链(如 LlamaFactory)的熟悉程度和实践经验
  • NLP学习路线图(二十一): 词向量可视化与分析
  • Unity 性能优化终极指南 — GameObject 篇
  • 浅谈边缘计算
  • 基于LEAP模型在能源环境发展、碳排放建模预测及分析中实践应用
  • c++之STL容器的学习(上)
  • 『uniapp』把接口的内容下载为txt本地保存 / 读取本地保存的txt文件内容(详细图文注释)
  • 便捷高效能源服务触手可及,能耗监测系统赋能智能建筑与智慧城市
  • LEAP模型能源需求/供应预测、能源平衡表核算、空气污染物排放预测、碳排放建模预测、成本效益分析、电力系统优化
  • 无人机巡检智能边缘计算终端技术方案‌‌——基于EFISH-SCB-RK3588工控机/SAIL-RK3588核心板的国产化替代方案‌