回溯算法

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.例题:

  蓝桥:粘木棍,车的放置。

posted @ 2022-03-15 09:42  星辉与你  阅读(125)  评论(0)    收藏  举报