第七章 回溯算法理论基础

简介: 第七章 回溯算法理论基础

一、定义

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

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

1.1回溯的效率

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

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

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

1.2回溯法的理解

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

二、回溯法的模板

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

回溯法三部曲:

void backtracking(参数)
if(终止条件){
    存放结果;
    return;
}
for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {//回溯逻辑处理
    处理节点;
    backtracking(路径,选择列表); // 递归
    回溯,撤销处理结果
}
  • 整理一下模板、完整如下:
void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }
    for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {
        处理节点;
        backtracking(路径,选择列表); // 递归
        回溯,撤销处理结果
    }
}


目录
相关文章
|
4天前
|
算法
第四章 KMP算法理论基础
第四章 KMP算法理论基础
8 0
|
20天前
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
2月前
|
算法
【算法】递归、搜索与回溯——汉诺塔
【算法】递归、搜索与回溯——汉诺塔
|
2月前
|
算法
【算法】递归、搜索与回溯——简介
【算法】递归、搜索与回溯——简介
|
4月前
|
机器学习/深度学习 人工智能 算法
回溯算法是怎样的
回溯算法,择优搜索:树的深搜+剪枝
|
4月前
|
机器学习/深度学习 存储 算法
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
|
4月前
|
算法 数据挖掘 开发者
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
LeetCode题目55:跳跃游戏【python5种算法贪心/回溯/动态规划/优化贪心/索引哈希映射 详解】
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第3期】回溯问题系列:单词搜索、N皇后问题、判断有效数独、解数独
【经典LeetCode算法题目专栏分类】【第3期】回溯问题系列:单词搜索、N皇后问题、判断有效数独、解数独
|
4月前
|
机器学习/深度学习 存储 算法
LeetCode题目 90:五种算法 回溯\迭代\位掩码\字典树\动态规划实现 子集ll
LeetCode题目 90:五种算法 回溯\迭代\位掩码\字典树\动态规划实现 子集ll
|
5月前
|
算法 决策智能 索引
数据结构与算法 回溯
数据结构与算法 回溯
31 1