1. 回溯算法可以解决什么问题
1. 组合问题: N个数里面按一定规则找出k个数的集合
2. 切割问题: 一个字符串按一定规则有几种切割方式
3. 子集问题: N个数的集合里有多少符合条件的子集
4. 排列问题: N个数按一定规则全排列,有几种排列方式
5. 棋盘问题:N皇后,解数独
2. 具体刷题记录
回溯算法三部曲:
- 确定递归函数参数
- 确定终止条件
- 单层搜索过程
3. 回溯算法伪代码模板
const function backtracking(参数){
if(终止条件){
存放结果;
return ;
}
for(选择:本层集合中元素(树种节点孩子的数量就是集合大小)){
处理节点;
backtracking(路径,选择列表);//递归
回溯,撤销处理结果
}
}