Leetcode打卡:N皇后
执行结果:通过

题目:51 N皇后
按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。
每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。
示例 1:

输入:n = 4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释:如上图所示,4 皇后问题存在两个不同的解法。
示例 2:
输入:n = 1 输出:[["Q"]]
提示:
1 <= n <= 9
代码以及解题思路
代码:
class Solution:def solveNQueens(self, n: int) -> List[List[str]]:ans = []def dfs(i, a):if i == n: ans.append(['.' * j + 'Q' + '.' * (n - j - 1) for j in a])returnfor j in range(n):if all(j1 != j and j1 - i1 != j - i and j1 + i1 != j + i for i1, j1 in enumerate(a)):dfs(i + 1, a + [j])for i in range(n): dfs(1, [i])return ans
解题思路:
- 初始化结果列表:
ans = []:用来存储所有满足条件的N皇后摆放方式。
- 定义深度优先搜索函数
dfs(i, a):i:当前正在尝试放置皇后的行数(从1开始)。a:一个列表,存储了到目前为止每一行皇后放置的列索引(从0开始)。
- 递归终止条件:
if i == n::当i等于n时,说明已经成功地在每一行都放置了一个皇后,此时将当前摆放方式添加到结果列表中。ans.append(['.' * j + 'Q' + '.' * (n - j - 1) for j in a]):将当前摆放方式转换为字符串列表,每个字符串代表棋盘的一行,'Q'表示皇后,'.'表示空位。
- 递归过程:
- 遍历当前行的每一列
j(从0到n-1)。 - 检查当前列
j是否安全,即是否不与之前放置的皇后冲突。all(j1 != j and j1 - i1 != j - i and j1 + i1 != j + i for i1, j1 in enumerate(a)):检查当前列j和之前每一行放置的皇后j1是否在同一列、同一主对角线或同一副对角线上。
- 如果安全,则递归调用
dfs(i + 1, a + [j]),将当前列j添加到已放置皇后的列索引列表中,并尝试在下一行放置皇后。
- 遍历当前行的每一列
- 启动搜索:
- 遍历第一行的每一列
i(从0到n-1),作为搜索的起点,调用dfs(1, [i])开始搜索。
- 遍历第一行的每一列
- 返回结果:
- 返回所有满足条件的N皇后摆放方式
ans。
- 返回所有满足条件的N皇后摆放方式
总结:
- 这段代码通过深度优先搜索(DFS)和回溯算法,尝试在N×N的棋盘上放置N个皇后,并记录所有满足条件的摆放方式。
- 通过递归和条件判断,确保每一行放置的皇后不与之前放置的皇后在同一列、同一主对角线或同一副对角线上。
相关文章:
Leetcode打卡:N皇后
执行结果:通过 题目:51 N皇后 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#…...
Linux内核4.14版本——ccf时钟子系统(3)——ccf一些核心结构体
目录 1. struct clk_hw 2. struct clk_ops 3. struct clk_core 4. struct clk_notifier 5. struct clk 6. struct clk_gate 7. struct clk_divider 8. struct clk_mux 9. struct clk_fixed_factor 10. struct clk_fractional_divider 11. struct clk_multiplier 12…...
[Deep Learning] 深度学习中常用函数的整理与介绍(pytorch为例)
文章目录 深度学习中常用函数的整理与介绍常见损失函数1. L2_loss | nn.MSELoss()公式表示:特点:应用:缺点:主要参数:示例用法:注意事项: 2. L1 Loss | nn.L1Loss数学定义:特点&…...
【ETCD】etcd简单入门之单节点部署etcd
etcd 是一个分布式可靠的键值存储系统,用于分布式系统中最关键的数据,主要特点包括: 简单:具有明确的、面向用户的 API(gRPC) 安全:自动 TLS 支持,并可选的客户端证书认证 快速&am…...
Cadence基础语法
03-Cadence基础语法 0 Cadence基础语法入门:流程编排语言的新星 Cadence是由Uber开发的一种领域特定语言(Domain-Specific Language,DSL),专门用于编写可扩展的长时间运行的业务流程。它是Temporal工作流引擎的核心组…...
GAMES101虚拟机使用教程与探讨
写在前面 环境配置请参考作业0的pdf,本文章主要对于配置好环境后怎么使用以及遇到的问题进行探讨(要是有更方便的使用方式欢迎在评论区讨论),自己刚开始用的时候也折腾了好久,希望能为后来学习的小伙伴节约一点工具使…...
王道考研编程题总结
我还在完善中,边复习边完善(这个只是根据我自身总结的) 一、 线性表 1. 结构体 #define MaxSize 40 typedef struct{ElemType data[MaxSize];int length; }SqList 2. 编程题 1. 删除最小值 题意 :从顺序表中删除…...
算法2--滑动窗口
滑动窗口 滑动窗口经典例题长度最小的子数组无重复字符的最长子串[最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/description/)[将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/description…...
pycharm或conda中配置镜像源
文章目录 1. 为什么要配置镜像源2. pycharm配置2.1使用pip配置国内镜像源2.2 Pycharm中更改镜像源 3.conda配置镜像源3.1 使用conda命令3.2 文件所在位置(进行增删)3.3 conda常用的几个命令 参考文献 1. 为什么要配置镜像源 由于Python在下载包时&#…...
C#基础之方法
文章目录 1 方法1.1 定义方法1.2 参数传递1.2.1 按值传递参数1.2.2 按引用传递参数1.2.3 按输出传递参数1.2.4 可变参数 params1.2.5 具名参数1.2.6 可选参数 1.3 匿名方法1.3.1 Lambda 表达式1.3.1.1 定义1.3.1.2 常用类型1.3.1.3 Lambda 表达式与 LINQ1.3.1.4 Lambda 表达式的…...
JVM 性能调优 -- JVM常用调优工具【jps、jstack、jmap、jstats 命令】
前言: 前面我们分析怎么去预估系统资源,怎么去设置 JVM 参数以及怎么去看 GC 日志,本篇我们分享一些常用的 JVM 调优工具,我们在进行 JVM 调优的时候,通常需要借助一些工具来对系统的进行相关分析,从而确定…...
PostgreSQL 三种关库模式
PostgreSQL 三种关库模式 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777PostgreSQL 提供了三种关库模式&…...
《运放秘籍》第二部:仪表放大器专项知识点总结
一、差分放大器与仪表放大器的讨论 1.1. 仪放的前世今生——差分放大器原理? 1.2. 差分放大的原理 1.3. 差分放大器检测电流 1.4. 差分放大器端一:输入阻抗 1.5. 差分放大器端二:共模抑制比 1.6. 为什么关注输入阻抗?共模抑…...
C++STL之vector(超详细)
CSTL之vector 1.vector基本介绍2.vector重要接口2.1.构造函数2.2.迭代器2.3.空间2.3.1.resize2.3.2.capacity 2.4.增删查找 3.迭代器失效4.迭代器分类 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀Ὠ…...
ubuntu环境下安装electron环境,并快速打包
1.配置镜像源 关闭防火墙,命令:sudo ufw disable 1.1配置国内镜像源: vim /etc/apt/source.list deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiversedeb-src https://mirrors.aliyun.com/ubuntu/ jammy main…...
【Pytorch】优化器(Optimizer)模块‘torch.optim’
torch.optim 是 PyTorch 中提供的优化器(Optimizer)模块,用于优化神经网络模型的参数,更新网络权重,使得模型在训练过程中最小化损失函数。它提供了多种常见的优化算法,如 梯度下降法(SGD&#…...
API平台建设之路:从0到1的实践指南
在这个互联网蓬勃发展的时代,API已经成为连接各个系统、服务和应用的重要纽带。搭建一个优质的API平台不仅能为开发者提供便利,更能创造可观的商业价值。让我们一起探讨如何打造一个成功的API平台。 技术架构是API平台的根基。选择合适的技术栈对平台的…...
【Flink-scala】DataStream编程模型之窗口计算-触发器-驱逐器
DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 文章目录 DataStream API编程模型前言1.触发器1.1 代码示例 2.驱逐器2.1 代码示例 总结 前言 本小节我想…...
信号灯集以及 P V 操作
一、信号灯集 1.1 信号灯集的概念 信号灯集是进程间同步的一种方式。 信号灯集创建后,在信号灯集内部会有很多个信号灯。 每个信号灯都可以理解为是一个信号量。 信号灯的编号是从0开始的。 比如A进程监视0号灯,B进程监视1号灯。 0号灯有资源&…...
在 Flutter app 中,通过视频 URL 下载视频到手机相册
在 Flutter app 中,通过视频 URL 下载视频到手机相册可以通过以下步骤实现: 1. 添加依赖 使用 dio 下载文件,结合 path_provider 获取临时存储路径,以及 gallery_saver 将文件保存到相册。 在 pubspec.yaml 中添加以下依赖&…...
2分钟搞定:Windows包管理器Winget一键安装全攻略
2分钟搞定:Windows包管理器Winget一键安装全攻略 【免费下载链接】winget-install Install winget tool using PowerShell! Prerequisites automatically installed. Works on Windows 10/11 and Server 2022. 项目地址: https://gitcode.com/gh_mirrors/wi/winge…...
如何用Sunshine打造个人游戏串流中心:跨设备畅玩的终极指南
如何用Sunshine打造个人游戏串流中心:跨设备畅玩的终极指南 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/S…...
将Autoresearch转化为通用技能
我是一名技术作家。我每天在文档仓库、Markdown 文件、API 参考、风格指南和 SEO 审计中度过。我不训练语言模型。我不写 CUDA 内核。但当 Andrej Karpathy 发布了他的 autoresearch 时,我无法停止思考它。 这个想法太简单了,事后看来似乎很明显&#x…...
STM32F103C8T6驱动无FIFO的OV7670:从时序理解到图像显示的完整避坑指南
STM32F103C8T6驱动无FIFO的OV7670:从时序理解到图像显示的完整避坑指南 当你第一次将OV7670摄像头模块连接到STM32F103C8T6开发板时,可能会被那些看似简单的时序信号搞得晕头转向。VSYNC、HREF、PCLK——这些信号线背后隐藏着图像数据采集的全部秘密。本…...
避坑指南:Pyannote3.1+Whisper本地部署的5个常见报错解决方案
避坑指南:Pyannote3.1Whisper本地部署的5个常见报错解决方案 语音处理技术正在重塑教育、会议记录和客服质检等场景的交互方式。当开发者尝试将Whisper的精准语音识别与Pyannote的说话人分离能力结合时,常会在环境配置环节遭遇"拦路虎"。本文…...
手把手教你用Node.js和Bun配置Cursor AI与Figma的MCP通信(附完整避坑清单)
从零构建Cursor AI与Figma的MCP通信桥梁:Node.jsBun全链路配置指南 当设计工具与AI代码助手实现双向通信时,创意工作流将迎来革命性变化。本文面向具备Node.js基础的前端/全栈开发者,深入解析如何搭建Cursor AI与Figma间的MCP协议通信通道。…...
OpenClaw跨平台同步:GLM-4.7-Flash配置在多设备间保持一致
OpenClaw跨平台同步:GLM-4.7-Flash配置在多设备间保持一致 1. 为什么需要跨设备同步OpenClaw配置 上周我在出差时遇到一个尴尬场景:笔记本上的OpenClaw突然无法响应飞书消息,而所有配置都留在办公室的台式机上。这让我意识到——当AI助手成…...
数据清洗避坑指南:缺失值和异常值处理的5个常见错误(附真实案例)
数据清洗避坑指南:缺失值和异常值处理的5个常见错误(附真实案例) 在电商平台的用户行为分析中,我们曾遇到一个诡异现象:某促销活动页面的转化率突然飙升到98%。进一步排查发现,是爬虫程序将未加载完成的页…...
3步搞定:如何让VR视频在普通屏幕上完美播放
3步搞定:如何让VR视频在普通屏幕上完美播放 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirrors/vr/V…...
直流GIL绝缘子表面电荷积聚的电热耦合机理与电场畸变特性研究
中国电机工程学报文献复现 关于comsol GIL仿真模型:基于电热多物理场耦合模型的直流GIL 绝缘子表面电荷积聚及其对沿面电场影响的研究上周啃完那篇中国电机工程学报的直流GIL绝缘子仿真论文,本来以为照着公式套就能搞定,结果在Comsol里卡了整…...
