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

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://www.lryc.cn/news/2397984.html

相关文章:

  • MySQL 8 完整安装指南(Ubuntu 22.04)
  • C++ 标准输入输出 -- <iostream>
  • 记一次sql按经纬度计算距离
  • 安卓jetpack compose学习笔记-UI基础学习
  • 线性回归用于分类
  • 解锁电商新势能:商城系统自动 SaaS 多开功能深度解析
  • 蓝桥杯_DS18B20温度传感器---新手入门级别超级详细解析
  • C++中锁与原子操作的区别及取舍策略
  • ESP32对接巴法云实现配网
  • 《深度剖析:基于Meta的GameFormer构建自博弈AI游戏代理》
  • C++语法系列之类型转换
  • Qwen3 技术报告解读一
  • 详解开漏输出和推挽输出
  • 【八股消消乐】索引失效与优化方法总结
  • 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——4. 配置服务器终端环境 zsh , oh my zsh, vim
  • 数据安全合规体系构建的“三道防线“
  • 【Spring底层分析】Spring AOP基本使用+万字底层源码阅读分析
  • Python数据分析及可视化中常用的6个库及函数(二)
  • 新德通科技:以创新驱动光通信一体化发展,赋能全球智能互联
  • Selenium的底层原理
  • PostgreSQL的扩展 auth_delay
  • [Java 基础]Java 是什么
  • Qt学习2
  • C++ 内存泄漏检测器设计
  • 在 Linux 上安装 Nmap 工具
  • 从零打造AI面试系统全栈开发
  • 破局与进阶:ueBIM 在国产 BIM 赛道的差距认知与创新实践
  • 分布式流处理与消息传递——向量时钟 (Vector Clocks) 算法详解
  • 20250603在荣品的PRO-RK3566开发板的Android13下的命令行查看RK3566的温度
  • 帝可得 - 设备管理