1. 回溯算法
- 回溯函数模范返回值以及参数
void backtracking(参数)
- 回溯函数的终止条件
if(终止条件){
存放结果;
return;
}
- 回溯搜索的遍历
for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){
处理节点;
backtracking(路径,选择列表);
回溯,撤销处理结果;
}
回溯算法模板框架:
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表);
回溯,撤销处理结果
}
}
2. 贪心算法
- 将问题分解为若干个子问题
- 找出适合的贪心策略
- 求解每个子问题的最优解
- 将局部最优解堆叠成全局最优解
3. 动态规划
- 确定dp数组以及下标的含义
- 确定递推公式
- db数组如何初始化
- 确定遍历顺序
- 举例推到dp数组
4. 递归方法
- 确定递归函数参数以及返回值
- 确定终止条件
- 确定单层递归的逻辑