回溯算法
回溯算法使用DFS在解空间中进行搜索,在某条路径上搜索不到答案时,回退到上层,换条路径搜索。
- 注意:由于使用递归,可能会导致爆栈
算法框架
backtrace(解空间和路径等状态){
if(满足退出条件){
记录满足条件的路径
return;
}
for(在解空间中遍历当前节点){
//减枝
if(不可达路径) continue;
把当前节点加入路径
backtrace(下次运行的解空间和路径等状态);
把当前节点从路径中删除
}
}
题目及分析
leetcode 17 电话号码的字母组合
leetcode 216 组合总和