- 博客(3)
- 收藏
- 关注
原创 回溯法:暴力搜索中的 “聪明策略”
而回溯法,正是一种在暴力枚举基础上优化的 “聪明策略”—— 它像走迷宫一样,一路探索,走不通就退回上一步换条路,大大减少了不必要的计算。它不像动态规划那样有很高的思维门槛,更多的是一种 “套路化” 的算法 —— 只要掌握了路径、选择列表、结束条件这三个核心要素,套用通用模板,再根据具体问题调整细节,就能解决大部分回溯类题目。它的本质是深度优先搜索(DFS) 的一种应用,通过递归的方式,一步步构建可能的解。如果不符合条件,就回溯—— 撤销当前的选择,回到上一步,尝试其他可能的选择。,返回其所有可能的全排列。
2025-12-16 17:51:46
430
原创 N皇后问题—课程设计
N皇后的核心约束,皇后的攻击范围是同一行、同一列、同一正斜线和同一反斜线。对于n皇后问题,每一行只能放置一个皇后,每一列只能放置一个皇后,对于棋盘位置(i, j),i - j的值相同的位置处于同一条正斜线或同一条反斜线。基于这些约束,我们可以通过回溯法放置皇后,并通过剪枝减少无效的搜索,从而高效找到所有合法解。从第0行开始,逐行尝试在每一列放置皇后,若当前列或对角线已被占用,跳过该列。在n×n的国际象棋棋盘上放置n个皇后,使任意两个皇后都不处于同一行、同一列,同一斜线上,最终返回所有合法的放置方案。
2025-12-10 21:55:14
193
原创 新手入门C++:回文数判断的两种思路
输入 `121` → 输出 `true`(121正读反读都是121) 输入 `-121` → 输出 `false`(负数含负号,不可能是回文数) - 示例3:输入 `10` → 输出 `false`(10反读是01,即1,和原数不一致)思路1:转数组双指针比对是最直观的思路,把数字拆成单个字符/数字存起来,再从首尾往中间对比, 把整数的每一位数字提取出来,存入动态数组 `vecto’r;`digits.size()`:获取数组当前的元素个数(长度),比如数组存了[1,2,1],size()返回3;
2025-12-07 19:51:53
249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅