news 2026/9/14 12:25:26

力扣 LeetCode 51. N皇后(Day14:回溯算法)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣 LeetCode 51. N皇后(Day14:回溯算法)

解题思路:

每次进入backtracking都表示进入下一行

每个backtracking中处理当前行的各个列,看各列是否合法

isValid中

因为是一行一行向下遍历的,所以对应的当前行一定满足条件,没有放置过其他皇后,只需要看对应的列是否满足即可

是否符合需要看左上45°和右上45°,之所以是往上看,是因为只有上才有先前放置过的皇后

注意终止条件row == n,而不是row == n-1,row 表示当前准备放皇后的行。当 row == n-1时,最后一行还没放皇后

class Solution { List<List<String>> res = new ArrayList<>(); public List<List<String>> solveNQueens(int n) { char[][] board = new char[n][n]; for (char[] c : board) { Arrays.fill(c, '.'); } backtracking(board, n, 0); return res; } public void backtracking(char[][] board, int n, int row) { if (row == n) { res.add(formatConversion(board)); return; } for (int i = 0; i < n; i++) { // i表示在当前row保持不变时的各个列 if (isValid(board, n, row, i)) { board[row][i] = 'Q'; backtracking(board, n, row + 1); board[row][i] = '.'; } } } public List<String> formatConversion(char[][] board) { List<String> list = new ArrayList<>(); for (char[] c : board) { String s = new String(c); list.add(s); } return list; } public boolean isValid(char[][] board, int n, int row, int col) { 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 - 1; i--, j++) { if (board[i][j] == 'Q') return false; } return true; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 12:25:11

力扣 LeetCode 17. 电话号码的字母组合(Day12:回溯算法)

解题思路&#xff1a;需要构想好回溯树的宽度和深度分别代表什么含义宽度&#xff1a;abc或其他数字对应的字母排列&#xff08;for循环使用&#xff09;深度&#xff1a;digits的长度&#xff08;递归深度使用&#xff0c;index 1&#xff09;注意&#xff1a;终止条件是if (…

作者头像 李华
网站建设 2026/9/14 12:24:42

专科生应对AI依赖:10款降AI率工具与能力提升策略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 12:21:38

2026年多模态应用实战:OpenCV为何仍是视觉大模型的核心基础设施

2. 开篇&#xff1a;为什么2026年做多模态应用&#xff0c;反而绕不开OpenCV过去两年我一直在折腾多模态和视觉大模型方向&#xff0c;从CLIP系列的图文对齐&#xff0c;到LLaVA这类视觉指令微调&#xff0c;再到各种检测分割多模态融合方案&#xff0c;踩过的坑能堆满一个书架…

作者头像 李华
网站建设 2026/9/14 12:20:06

SSM框架企业人事管理系统实战:数据建模、登录认证与考勤统计

简介&#xff1a;这是一套基于SSM框架与JavaWeb技术开发的企业人事管理系统毕业设计资料包&#xff0c;面向计算机专业学生及有课程设计、毕业设计需求的学习者。系统采用JSPMySQLTomcat技术栈&#xff0c;划分管理员、部门经理、员工三级角色&#xff0c;覆盖员工管理、考勤签…

作者头像 李华
网站建设 2026/9/14 12:18:58

多智能体动态任务分配:GCAA算法原理与Matlab实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华