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

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{// 存放最终结果// 每一个 List<String> 表示一种棋盘摆放方案List<List<String>>result=newArrayList<>();// 当前棋盘路径// 每个 String 表示棋盘的一行List<String>path=newArrayList<>();/** * 判断当前位置是否可以放皇后 * * @param n 棋盘大小 * @param row 当前行 * @param column 当前列 * @param chessboard 当前棋盘 */publicbooleanisValid(intn,introw,intcolumn,char[][]chessboard){/** * 检查同行、同列是否有皇后 */for(inti=0;i<row;i++){// 纵向检查if(chessboard[i][column]=='Q')returnfalse;}/** * 检查主对角线(\) */// 左上方向introw1=row;intcolumn1=column;while(row1-->0&&column1-->0){if(chessboard[row1][column1]=='Q')returnfalse;}/** * 检查副对角线(/) */// 右上方向row1=row;column1=column;while(row1-->0&&column1++<n-1){if(chessboard[row1][column1]=='Q')returnfalse;}// 当前位置合法returntrue;}/** * 回溯函数 * * @param n 棋盘大小 * @param row 当前处理到第几行 * @param chessboard 当前棋盘状态 */publicvoidbacktracking(intn,introw,char[][]chessboard){/** * 终止条件 * * row == n * 说明前 n 行已经全部放置完成 */if(row==n){// 保存当前方案result.add(newArrayList<>(path));return;}/** * 枚举当前行的每一列 */for(inti=0;i<n;i++){/** * 判断当前位置是否合法 */if(isValid(n,row,i,chessboard)){// 放置皇后chessboard[row][i]='Q';// 当前行加入路径path.add(newString(chessboard[row]));// 递归下一行backtracking(n,row+1,chessboard);// 回溯:移除皇后chessboard[row][i]='.';// 删除当前行path.remove(path.size()-1);}}}publicList<List<String>>solveNQueens(intn){/** * 初始化棋盘 * * '.' 表示空位 */char[][]chessboard=newchar[n][n];for(inti=0;i<n;i++){for(intj=0;j<n;j++){chessboard[i][j]='.';}}// 从第0行开始回溯backtracking(n,0,chessboard);returnresult;}}
http://www.jsqmd.com/news/1165039/

相关文章:

  • 亿企财税会员服务怎么收费?亿企赢帮你算清这笔账 - 资讯纵览
  • 2026年深圳开关电源避坑必看 明纬选型干货指南
  • 基于OE1022的弱信号检测:Fe3GeTe2 超快退磁实验的关键技术支撑
  • 2026年7月最新郑州劳力士官方售后服务热线与网点地址查询 - 劳力士官方服务中心
  • 深度解析:高职AI实训基地建设找哪家?探寻高效落地模式与卓越成果
  • Meta Muse Image:AI图像生成与社交平台的深度集成技术解析
  • 避坑指南:使用 Docker 部署 Python Flask 项目的完整实战记录
  • 工业级ADC信号采集系统设计与优化实践
  • 诺顿杀毒软件评测:优点突出但付费功能引不满,能否成为你的安全之选?
  • NOIP 2008 笨小猴:哈希表统计与质数判断的 2 种 C++ 实现对比
  • 用 WorkBuddy 做一个「提示词生成 Agent」,覆盖主流模型和全场景,小白 10 分钟上手
  • 一文读懂MFi认证完整申请流程、周期与核心难点
  • 百达翡丽中国官方售后服务中心|全部地址与售后服务电话权威信息通告(2026年7月最新) - 百达翡丽官方售后中心
  • 代账人提效指南:亿企赢批量做账省时间怎么做到的 - 资讯纵览
  • 2026数据分析工具超全对比!新手/分析师/企业全覆盖,告别选型内耗
  • HART 协议 v7.0 与 v5.0 对比:从 15 到 63 个地址的演进与实战影响
  • 2026年数字人定制公司推荐榜单:数字人偶像打造、形象定制、内容策划与账号运营服务商实测指南 - 资讯纵览
  • 1X Technologies放大招:25自由度机器人手赋能NEO,今年产能将达1万只!
  • AMOS 模型适配度不佳:3 种常见原因与 5 步修正策略实战
  • ESP8266 AP模式配置:5个关键参数详解与手机端通信测试
  • 亲身到店探访广州浪琴官方售后服务中心|详细地址及售后服务电话(2026年7月最新) - 浪琴服务中心
  • C++递推实战:信息学奥赛1313题“位数问题”的3种边界条件处理与取模技巧
  • ADP5350与STM32的智能电源管理方案设计
  • 2026年头戴式耳机选购指南:场景适配比参数更重要
  • ST7735S TFT-LCD驱动对比:HAL库硬件SPI vs 软件模拟SPI在F103C8T6上的性能实测
  • 3步极速导出QQ空间完整历史记录:GetQzonehistory终极备份指南
  • 大众点评爬虫完整指南:15分钟破解动态字体加密,轻松采集全站数据
  • 抖音批量下载终极指南:5分钟搞定无水印视频素材收集
  • 晶闸管与IGBT驱动电路对比:3种隔离方案与5个关键参数实测
  • Coze扣子AI智能体开发实战:从零构建多Agent协作系统