0
点赞
收藏
分享

微信扫一扫

第七章 回溯算法理论基础


第七章 回溯算法理论基础

文章目录

  • ​​第七章 回溯算法理论基础​​
  • ​​一、定义​​
  • ​​1.1回溯的效率​​
  • ​​1.2回溯法的理解​​
  • ​​二、回溯法的模板​​

一、定义

回溯法也可以叫做回溯搜索法,是一种搜索方式。

回溯和递归是孪生兄弟,同出同没。 ​​回溯=递归​

1.1回溯的效率

回溯的效率并不高,本质是一个枚举,之所以学它,是因为某些场合下必须用回溯法解决问题。

回溯可以解决如下的问题:

  • 组合问题【N个数里面按一定规则找出k个数的集合】
  • 切割问题【一个字符串按一定规则有几种切割方式】
  • 子集问题【一个N个数的集合里有多少符合条件的子集】
  • 排列问题【N个数按一定规则全排列,有几种排列方式】组合无序,排列有序。
  • 棋盘问题【N皇后,解数独等等】

1.2回溯法的理解

回溯法可以理解成一种树形结构。这个结构具有 ​​深度​​​、​​高度​​。

二、回溯法的模板

回溯法是可以理解成树形结构,所以他的模板和递归模板一样也是三部曲!

回溯法三部曲:

void backtracking(参数)

if(终止条件){
存放结果;
return;
}

for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {//回溯逻辑处理
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}

整理一下模板、完整如下:

void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}

for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
}


举报

相关推荐

回溯算法理论基础

第七章

第七章:事务

第七章:集合

第七章 类

第七章 数组

第七章 集合

第七章 Java基础类库

0 条评论