代码随想录26|回溯总结

回溯总结:链接地址

回溯三部曲 :参数、终止条件、for遍历(递归、回溯)

模板如下:

cpp 复制代码
void backtracking(参数) {
    if (终止条件) {
        存放结果;
        return;
    }

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

组合问题:

startIndex来控制for循环的起始位置
切割问题:

切割过的地方不能重复切割所以递归函数需要传入i + 1
子集问题:

在树形结构中子集问题是要收集所有节点的结果,而组合问题是收集叶子节点的结果

相关推荐
Promise48519 小时前
贝尔曼公式的迭代求解笔记
笔记·算法
咖啡の猫19 小时前
Python中的变量与数据类型
开发语言·python
前端达人19 小时前
你的App消息推送为什么石沉大海?看Service Worker源码我终于懂了
java·开发语言
汤姆yu20 小时前
基于springboot的电子政务服务管理系统
开发语言·python
全栈师20 小时前
C#中控制权限的逻辑写法
开发语言·c#
S***q19220 小时前
Rust在系统工具中的内存安全给代码上了三道保险锁。但正是这种“编译期的严苛”,换来了运行时的安心。比如这段代码:
开发语言·后端·rust
打点计时器20 小时前
matlab 解决wfdb工具使用本地数据集报错
开发语言·matlab
zmzb010320 小时前
C++课后习题训练记录Day38
开发语言·c++
夏霞20 小时前
c# 使用vs code 创建.net8.0以及.net6.0 webApi项目的教程
开发语言·c#·.net
福尔摩斯张21 小时前
Linux进程间通信(IPC)机制深度解析与实践指南
linux·运维·服务器·数据结构·c++·算法