LeetCode--51. N皇后(回溯算法)

发布时间:2026/10/19 17:33:22

LeetCode--51. 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代码classSolution{// 存放最终结果// 每一个 ListString 表示一种棋盘摆放方案ListListStringresultnewArrayList();// 当前棋盘路径// 每个 String 表示棋盘的一行ListStringpathnewArrayList();/** * 判断当前位置是否可以放皇后 * * param n 棋盘大小 * param row 当前行 * param column 当前列 * param chessboard 当前棋盘 */publicbooleanisValid(intn,introw,intcolumn,char[][]chessboard){/** * 检查同行、同列是否有皇后 */for(inti0;irow;i){// 纵向检查if(chessboard[i][column]Q)returnfalse;}/** * 检查主对角线\ */// 左上方向introw1row;intcolumn1column;while(row1--0column1--0){if(chessboard[row1][column1]Q)returnfalse;}/** * 检查副对角线/ */// 右上方向row1row;column1column;while(row1--0column1n-1){if(chessboard[row1][column1]Q)returnfalse;}// 当前位置合法returntrue;}/** * 回溯函数 * * param n 棋盘大小 * param row 当前处理到第几行 * param chessboard 当前棋盘状态 */publicvoidbacktracking(intn,introw,char[][]chessboard){/** * 终止条件 * * row n * 说明前 n 行已经全部放置完成 */if(rown){// 保存当前方案result.add(newArrayList(path));return;}/** * 枚举当前行的每一列 */for(inti0;in;i){/** * 判断当前位置是否合法 */if(isValid(n,row,i,chessboard)){// 放置皇后chessboard[row][i]Q;// 当前行加入路径path.add(newString(chessboard[row]));// 递归下一行backtracking(n,row1,chessboard);// 回溯移除皇后chessboard[row][i].;// 删除当前行path.remove(path.size()-1);}}}publicListListStringsolveNQueens(intn){/** * 初始化棋盘 * * . 表示空位 */char[][]chessboardnewchar[n][n];for(inti0;in;i){for(intj0;jn;j){chessboard[i][j].;}}// 从第0行开始回溯backtracking(n,0,chessboard);returnresult;}}
延伸阅读

更多相关文章

2026/10/18 15:41:50

AI视频修复技术:从原理到实践的老视频高清化指南

这次我们来看一个经典视频修复项目——张国荣1984年十大劲歌金曲现场的高清修复版本。这个修复作品最值得关注的是在保持原视频韵味的同时实现了清晰度的大幅提升,让经典舞台重现光彩。对于喜欢怀旧经典、需要处理老视频素材的用户来说,这种修复技术非常…

2026/10/14 13:19:23

康奈尔 CS3110 数据结构与函数式编程讲义(四)

http://adam.chlipala.net/cpdt/* * *索引* * *本页由[coqdoc](http://www.lix.polytechnique.fr/coq/)生成。# 渐近复杂性的回顾* * *<menu>* 渐近分析* 最坏情况和平均情况分析* 增长顺序和大 O 符号* 比较增长顺序* 二叉搜索树* 练习</menu>* * *##…

2026/10/19 17:30:56

基于书评文本的推荐系统:Java实现标签提取与相似度匹配

简介&#xff1a;一套基于网络书评文本内容的个性化书籍推荐系统设计源码&#xff0c;面向Java开发者、推荐系统研究者及自然语言处理入门者&#xff0c;解决如何从大量书评中甄别有效评论、构建书籍标签集并计算标签关联度&#xff0c;以实现内容精准匹配的问题。压缩包共40个…

2026/10/19 17:30:56

Grok国内使用指南:个人聊天入口与企业模型接入的两套答案

1. 先搞清楚问题到底在问什么“Grok 国内能不能用”这句话&#xff0c;我在不同场合听过至少几十遍&#xff0c;但每次追问一句“你具体想拿它干什么”&#xff0c;答案就分叉了。有人是想找个网页版聊天窗口&#xff0c;像用普通对话助手那样问点日常问题&#xff1b;有人是想…

2026/10/19 17:30:56

从手动到自动:MCP与AI在日志诊断中的工程实践

1. 凌晨两点的告警电话&#xff1a;我决定把日志诊断交给AI先还原一个真实场景。某天凌晨两点半&#xff0c;手机震动&#xff0c;线上服务异常告警。我爬起来打开终端&#xff0c;熟练地敲下那串早就刻进肌肉记忆的命令&#xff1a;先看错误率曲线&#xff0c;再进日志平台搜E…

2026/10/19 17:30:56

自动驾驶深度学习环境配置全指南:从GPU选型到多卡训练避坑

1. 自动驾驶入门第三讲&#xff1a;深度学习环境配置的全局拆解 搞自动驾驶&#xff0c;绕不开深度学习。不管你是做感知、预测还是规划控制&#xff0c;最终都要落到一个能跑模型的环境上。很多人卡在第一步——环境装不起来&#xff0c;或者装起来了但版本冲突、CUDA报错、训…

2026/10/19 17:25:42

Open Code Review:CLI+Git+本地LLM驱动的可审计代码评审范式

1. 什么是 open-code-review&#xff1a;一个被严重低估的工程实践范式“open-code-review”这个词最近在开发者社区里频繁出现&#xff0c;但它绝不是某个新发布的开源工具名&#xff0c;也不是某家大厂刚推出的SaaS服务。它本质上是一种可落地、可复现、可审计的代码审查工程…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介&#xff1a;这份PDF报告聚焦2025年金融服务业中国AI现状与趋势&#xff0c;面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者&#xff0c;帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件&#xff0c;大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介&#xff1a;基于悟空开源无代码平台的多种应用设计源码&#xff0c;面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员&#xff0c;通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件&#xff0c;约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介&#xff1a;这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统&#xff0c;后端基于 .Net9&#xff0c;前端采用 Vue3 Element Plus&#xff0c;并配套 uniapp uviewui 移动端方案&#xff0c;实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介&#xff1a;面向毕业设计场景的场地预约小程序完整项目&#xff0c;基于微信小程序SSMMySql技术栈开发&#xff0c;适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能&#xff0c;分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑