穷举所有可能的解,通过剪枝优化,常用于排列组合、子集问题

什么是回溯算法

回溯是一种通过穷举来寻找所有可能解的算法。它在每一步做出选择,如果发现当前选择不能得到解,就回退(回溯)到上一步,尝试其他选择。

🎯 为什么使用?

当问题需要找出所有满足条件的解(排列、组合、子集、分割等)时,回溯是标准解法。虽然时间复杂度高,但通过剪枝可以显著优化。

⚙️ 如何工作?

1. 做选择:将当前元素加入路径 2. 递归:进入下一层决策 3. 撤销选择:回溯,恢复状态,尝试其他选择 4. 剪枝:提前排除不可能的分支

🎨 形象比喻

想象在一棵决策树上行走。每个节点是一个选择,从根到叶子的路径是一个完整的方案。回溯就是遍历这棵树,记录所有有效的路径。

🔍 识别关键词

当你在题目中看到以下关键词时,考虑使用回溯算法

所有全部排列组合子集划分可能

📊 时间空间复杂度

时间复杂度
O(n * 2^n) 子集 | O(n * n!) 排列
空间复杂度
O(n) 递归深度

指数级或阶乘级复杂度,剪枝可以优化常数

?查看快捷键