回溯算法
基本理论
- 回溯算法和递归是相辅相成的
- 回溯法是一种纯暴力的算法,它并不是高效算法.
- 回溯问题都可以抽象成树形结构.
回溯法可以解决哪些问题?
- 组合问题: 在一组数据中找到大小为2的组合.
- 切割问题: 给一个字符串,有几种切割方式.
- 子集问题
- 排列问题: 排列强调顺序,组合不强调问题
- 棋盘问题: N皇后
回溯法的模板
- 递归函数一般没有返回值.
- 递归函数的命名一般叫
backtracking(参数)
- 需要有终止条件,在终止条件内收集结果.
1 | void basetracking(参数){ |
力扣22题, 括号生成
组合问题
回溯问题可以通过递归的方式控制for循环的嵌套层数
剪枝操作
for(集合元素) 通过某种判断条件减少遍历次数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 EddieLee!
评论