Day22

回溯算法

回溯与递归是什么关系?

有递归就会有回溯,递归函数的下面就是回溯的逻辑,有时回溯就是指递归,没有完全都是回溯的函数

回溯搜索本质上是暴力搜索

回溯法解决的问题:

组合问题 组合数字

切割问题 字符串有几种切割方式

子集问题 列出所有子集

排列问题

棋盘问题 N皇后,解数独

这些问题用暴力法for嵌套循环是解决不了的

如何理解回溯法?

所有的回溯法都可以抽象成一个树形结构

回溯法模板

void backtracking(参数){
    if(终止条件){
        在叶子结点收集结果
        return //结束当前函数调用
    }
    //单层搜索逻辑
    for(集合元素){
        处理结点;
        递归函数;
        回溯操作; //撤销处理结点的情况
    }
    return
}
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐