回溯算法
1.定义
1.1回溯是配合递归使用的,相当于递归的一种工具。递归是穷举搜索法的一种,效率不高,所以需要工具。回溯法就是通过剪枝技术来加快穷举搜索的速度。 1.2dfs算法当中,单一的递归解决不了问题的时候,就需要回溯来辅助配合,将递归前的节点操作取消。 1.3回溯的步骤是在递归函数下面,复杂,但是也是暴力搜索的一种。
2.解决问题
2.1组合问题
2.2切割问题
(把一个字符串按某种方式切割,求有多少种切割方式)
2.3子集问题
2.4排列问题
2.5棋盘问题
(比如说n皇后,解数独)
3.伪代码:
void backtracking(参数){
if(终止条件)
{//对叶子的操作
//reutrn;}
for(对元素集合集){
//对元素操作
//递归函数
//回溯操作(类似弹栈,将上两步的元素操作弹出去)
}return;
}
4.例题:
蓝桥:粘木棍,车的放置。

浙公网安备 33010602011771号