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

51N 皇后

题目描述

51. N 皇后 - 力扣(LeetCode)

按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

n 皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。

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

每一种解法包含一个不同的n 皇后问题的棋子放置方案,该方案中'Q''.'分别代表了皇后和空位。

示例 1:

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

示例 2:

输入:n = 1输出:[["Q"]]

代码思路

class Solution { public List<List<String>> solveNQueens(int n) { List<List<String>> result = new ArrayList<>(); // 创建棋盘,初始全为'.' char[][] board = new char[n][n]; for (char[] row : board) { Arrays.fill(row, '.'); } // 从第0行开始回溯 backtrack(result, board, 0, n); return result; } private void backtrack(List<List<String>> result, char[][] board, int row, int n) { // 终止条件:已经成功放置了n个皇后 if (row == n) { result.add(boardToList(board)); return; } // 尝试在当前行的每一列放置皇后 for (int col = 0; col < n; col++) { // 检查当前位置(row, col)是否可以放置皇后 if (isValid(board, row, col, n)) { // 做选择:放置皇后 board[row][col] = 'Q'; // 递归处理下一行 backtrack(result, board, row + 1, n); // 撤销选择:回溯 board[row][col] = '.'; } } } private boolean isValid(char[][] board, int row, int col, int n) { // 检查同一列是否有皇后(从第0行检查到当前行的上一行) for (int i = 0; i < row; i++) { if (board[i][col] == 'Q') { return false; // 同一列有皇后,冲突 } } // 检查左上方对角线是否有皇后 // 对角线上的坐标特点:行索引和列索引同时递减 for (int i = row - 1, j = col - 1; i >= 0 && j >= 0; i--, j--) { if (board[i][j] == 'Q') { return false; // 左上方对角线有皇后,冲突 } } // 检查右上方对角线是否有皇后 // 对角线上的坐标特点:行索引递减,列索引递增 for (int i = row - 1, j = col + 1; i >= 0 && j < n; i--, j++) { if (board[i][j] == 'Q') { return false; // 右上方对角线有皇后,冲突 } } // 不需要检查同一行,因为我们是逐行放置的 return true; // 所有检查都通过,可以放置 } private List<String> boardToList(char[][] board) { List<String> list = new ArrayList<>(); for (char[] row : board) { list.add(new String(row)); } return list; } }
http://www.jsqmd.com/news/119761/

相关文章:

  • 毕业季必看:9款免费AI论文神器实测,30分钟生成万字文献综述+真实文献全文引用!
  • 软件工程期末复习指南
  • AI 赋能学术演示!虎贲等考 AI PPT,让科研汇报告别 “无效努力”
  • ARC115F Migration
  • 问卷设计还在 “拍脑袋”?虎贲等考 AI:让科研调研从 “盲目发问” 到 “精准赋能”
  • 数据不 “躺平”!虎贲等考 AI 数据分析,让学术研究告别 “数字焦虑”
  • Windows系统文件dmenrollengine.dll损坏或丢失 下载修复
  • 实用指南:2025深度学习框架对决:TensorFlow与PyPyTorch深度测评
  • 实用指南:今日策略:年化398%,回撤11%,夏普5.0 | 金融量化多智能体架构方案
  • 开源AI模型与虚拟世界构建技术前沿
  • 软件缺失dmview.ocx文件 免费下载修复
  • 洛谷 P7518
  • 【学习笔记】线段树合并
  • 2025年采购必看:高口碑快速卷帘门品牌榜单,洁净车间工程/洁净工作台/FFU/净化工作台/医疗装修工程/洁净棚/货淋室快速卷帘门厂商哪个好 - 品牌推荐师
  • 软件工程期末高频易错点深度剖析:避开这些坑,你就赢了!
  • Windows系统文件dpx.dll损坏或丢失 下载修复
  • 基于ARMCortex-M4F内核的MSP432MCU开发实践【1.5】
  • still ace
  • CSP-J/S 2025 第一轮游记 _
  • 软件或游戏缺少DSETUP.dll文件 免费下载方法
  • 基于深度学习YOLOv8的水果识别水果检测苹果识别香蕉橘子识别目标检测
  • 2025年成都火锅老字号与新秀口碑对决,特色美食/烧菜火锅/火锅/社区火锅/美食成都火锅品牌推荐排行 - 品牌推荐师
  • 2025年实力盘点:引领行业趋势的家居装修公司,别墅装修/豪宅设计/家居装修/家居设计公司口碑推荐 - 品牌推荐师
  • 一文读懂字符与编码
  • 【专家亲授】Open-AutoGLM与SoapUI功能整合避坑指南:从冲突到协同的3步跃迁
  • 听完这场AI产品大会,我觉得如果不赚钱,所谓的提效真的毫无意义。
  • Open-AutoGLM能否彻底取代SoapUI?基于12个真实场景的协同能力压测结果公布
  • 示例Cone2,熟悉观察者模式,在Qt窗口中详解复现对应的Demo
  • 2025年伸缩悬臂货架哪家强?十大口碑厂家深度解析,伸缩悬臂货架/重型仓储货架/伸缩货架/抽拉式重型货架伸缩悬臂货架源头厂家有哪些 - 品牌推荐师
  • 当像素遇上混沌:MATLAB图像加密的奇幻漂流