思考策略
做回溯类算法的题先用暴力搜索枚举出所有情况,再根据题目条件进行剪枝和回溯。
做题流程
- 用暴力解法画决策树
- 在决策树上减掉不必要的枝干(剪枝)
- 找边界条件(回溯的条件)
- 设计递归的函数头,函数体,出口
如何画决策树
78.子集
22.括号生成
39.组合总和
题单分享
递归,搜索,与回溯题单分享
题单介绍
- 从汉诺塔到快速幂是简单的递归题
- 从计算二叉树的布尔值到二叉树的所有路径是二叉树的深度优先搜索
- 全排列和子集两道题是回溯和剪枝比较典型的两道题
- 从子集的异或总和到不同路径三全都是回溯算法题
- 从图像渲染到衣橱整理是洪水灌溉问题,可以用宽度优先搜索解决,也可以用深度优先搜索解决
- 从不同路径到矩阵中最长递增子序列是记忆化搜索问题,在回溯算法的基础上添加一个备忘录
刷题建议
题单一共36道题目,从简单的递归到深度优先搜索再到回溯与剪枝最后到记忆化搜索有易到难,中间洪水灌溉问题可以跳过,如果做的话建议用深度优先搜索