当前位置: 首页 > news >正文

【递归,搜索与回溯算法篇】- 名词解释

在这里插入图片描述

一. 递归

1. 什么是递归?

  • 定义: 函数自己调用自己的情况
  • 关键点:
    终止条件: 必须明确递归出口,避免无限递归
    子问题拆分: 问题需能分解成结构相同的更小的子问题
  • 缺点:
    栈溢出风险: 递归深度过大时可能引发栈溢出

2. 为什么会用到递归?

  • 二叉树的后序遍历
  • 快排
  • 归并

3. 如何理解递归?

  1. 递归展开的细节图
  2. 二叉树中的题目
  3. 宏观看待递归的过程
    ➀不要在意递归的细节展开图
    ➁把递归的函数当成一个黑盒
    ➂相信这个黑盒一定能完成任务

4. 如何写好一个递归?

  1. 先找到相同的子问题 -> 函数头的设计
  2. 只关心某一个子问题是如何解决的 -> 函数体的部分
  3. 注意递归函数的出口

手写笔记:
在这里插入图片描述
在这里插入图片描述

二.搜索 vs 深度优先遍历 vs深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜

  1. 深度优先遍历 vs 深度优先搜索 -> dfs
  2. 宽度优先遍历 vs 宽度优先搜索 -> bfs
    遍历是形式,目的是搜索

手写笔记:
在这里插入图片描述

3. 回溯与剪枝

回溯:

  1. 本质: 就是深搜
  • 在找某种情况的时候,发现这个情况行不通,然后返回到上一级的操作
  1. 核心思想:
  • 路径: 记录已做出的选择
  • 选择列表: 当前可用的选项
  • 结束条件: 满足条件时将路径加入结果

剪枝:

  1. 目标: 减少无效搜索,提前终止不可能到达解的路径
  2. 剪枝策略:
  • 可行性剪枝: 当前路径明显不满足约束时终止
  • 去重剪枝: 避免生成重复解
  • 最优解剪枝: 在求最优解时,若当前路径已劣于已知最优解,提前终止

相关文章:

【递归,搜索与回溯算法篇】- 名词解释

一. 递归 1. 什么是递归? 定义: 函数自己调用自己的情况关键点: ➀终止条件: 必须明确递归出口,避免无限递归 ➁子问题拆分: 问题需能分解成结构相同的更小的子问题缺点: ➀栈溢出风险&#x…...

【设计模式】装饰模式

六、装饰模式 装饰(Decorator) 模式也称为装饰器模式/包装模式,是一种结构型模式。这是一个非常有趣和值得学习的设计模式,该模式展现出了运行时的一种扩展能力,以及比继承更强大和灵活的设计视角和设计能力,甚至在有些场合下&am…...

c库、POSIX库、C++库、boost库之间的区别和联系

文章目录 一、区别1. 定义和来源2. 功能范围3. 可移植性4. 语言支持5. 维护和更新 二、联系1. 相互补充2. 部分功能重叠3. 共同促进编程发展4. 代码兼容性 三、总结 一、区别 1. 定义和来源 C 库函数:由 ANSI C 和 ISO C 标准定义,是 C 语言编程的基础…...

算法及数据结构系列 - 树

系列文章目录 算法及数据结构系列 - 二分查找 算法及数据结构系列 - BFS算法 算法及数据结构系列 - 动态规划 算法及数据结构系列 - 双指针 算法及数据结构系列 - 回溯算法 文章目录 树框架树遍历框架N叉树遍历框架 经典题型124.二叉树的最大路径和105.从前序与中序遍历序列构造…...

go安装lazydocker

安装 先安装go环境 https://blog.csdn.net/Yqha1/article/details/146430281?fromshareblogdetail&sharetypeblogdetail&sharerId146430281&sharereferPC&sharesourceYqha1&sharefromfrom_link 安装lazydocker go install github.com/jesseduffield/laz…...

《深度学习》——YOLOv3详解

文章目录 YOLOv3简介YOLOv3核心原理YOLOv3改进YOLOv3网络结构 YOLOv3简介 YOLOv3(You Only Look Once, version 3)是一种先进的实时目标检测算法,由 Joseph Redmon 和 Ali Farhadi 开发。它在目标检测领域表现出色,具有速度快、精…...

使用spring-ai-ollama访问本地化部署DeepSeek

创建SpringBoot工程&#xff0c;引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"htt…...

Kafka消息自定义序列化

文章目录 1. 默认序列化2.自定义序列化3.示例4.自定义解序列化器 1. 默认序列化 在网络中发送数据都是以字节的方式&#xff0c;Kafka也不例外。Apache Kafka支持用户给broker发送各种类型的消息。它可以是一个字符串、一个整数、一个数组或是其他任意的对象类型。序列化器(se…...

使用Systemd管理ES服务进程

Centos中的Systemd介绍 CentOS 中的 Systemd 详细介绍 Systemd 是 Linux 系统的初始化系统和服务管理器&#xff0c;自 CentOS 7 起取代了传统的 SysVinit&#xff0c;成为默认的初始化工具。它负责系统启动、服务管理、日志记录等核心功能&#xff0c;显著提升了系统的启动速…...

编程语言选择分析:C#、Rust、Go 与 TypeScript 编译器优化

编程语言选择分析&#xff1a;C#、Rust、Go 与 TypeScript 编译器优化 在讨论编程语言的选择时&#xff0c;特别是针对微软的 C# 和 Rust&#xff0c;以及谷歌的 Go 语言&#xff0c;以及微软试图通过 Go 来拯救 TypeScript 编译器的问题&#xff0c;我们可以从多个角度来分析和…...

使用粘贴控件

HarmonyOS 5.0.3(15) 版本的配套文档&#xff0c;该版本API能力级别为API 15 Release 文章目录 约束与限制开发步骤 粘贴控件是一种特殊的系统安全控件&#xff0c;它允许应用在用户的授权下无提示地读取剪贴板数据。 在应用集成粘贴控件后&#xff0c;用户点击该控件&#xf…...

MySQL 客户端连不上(1045 错误)原因全解析

MySQL 客户端连不上(1045 错误)原因全解析 在我们学习 MySQL 或从事 MySQL DBA 工作期间,时常会遇到:“我尝试连接到 MySQL 并且收到1045 错误,但我确定我的用户和密码都没问题”。 不管你现在是否是高手还是高高手,都不可避免曾经在初学的时候犯过一些很初级的错误,例…...

麒麟系列Linux发行版探秘

以下内容摘自《银河麒麟操作系统进阶应用》一书。 银河麒麟操作系统&#xff08;Kylin&#xff09; 银河麒麟&#xff08;Kylin&#xff09;操作系统是中国自主研发的一款基于Linux内核的操作系统。它的发展历程可以追溯到2002年&#xff0c;最初由国防科技大学主导研发&…...

刘强东突然发声:不该用算法压榨最底层兄弟!东哥,真正的人民企业家

今天忙了一天&#xff0c;很累&#xff0c;准备睡觉的时候&#xff0c;看到网上盛传的刘强东的朋友圈&#xff0c;东哥又在朋友圈发文了。 说实话&#xff0c;看完之后&#xff0c;感动&#xff0c;真的感动。 尤其是当我看到这两句话的时候。 1、我们所学的知识、商业模式、技…...

信息收集与问答系统流程分析与改进建议

现有系统的问题与局限 1. 资源管理问题 二元决策机制过于简化&#xff1a;当前系统仅在令牌预算耗尽时才进入Beast Mode&#xff0c;缺乏渐进式资源分配策略缺少早期预算规划&#xff1a;没有基于问题复杂度的初始资源分配机制缺乏优先级资源分配&#xff1a;所有问题和策略消…...

【人工智能】如何理解transformer中的token?

如何理解transformer中的token? **一、Token在Transformer中的作用****二、文本分词的常见方法****1. 基于词典的分词&#xff08;Dictionary-based Tokenization&#xff09;****2. 子词分词&#xff08;Subword Tokenization&#xff09;****(1) WordPiece算法****(2) BPE&a…...

Spring Boot 集成 Kafka 消息发送方案

一、引言 在 Spring Boot 项目中,Kafka 是常用的消息队列,可实现高效的消息传递。本文介绍三种在 Spring Boot 中使用 Kafka 发送消息的方式,分析各自优缺点,并给出对应的 pom.xml 依赖。 二、依赖引入 在 pom.xml 中添加以下依赖: <dependencies><!-- Sprin…...

Hadoop•HDFS的Java API操作

听说这是目录哦 上传文件到HDFS&#x1f308;一、下载Windows版本的JDK和Hadoop二、配置物理机环境变量三、创建项目四 、添加依赖五、新建java类六、创建文件七、打开集群八、选中、运行 从HDFS下载文件&#x1fa90;一、写代码二、HDFS要个文件三、物理机要个文件夹&#xff…...

电脑如何设置几分钟后自动关机

摘要&#xff1a;本文提供Windows、macOS和Linux系统设置定时自动关机的详细方法。 目录 一、Windows系统设置方法 设置定时关机 取消关机计划 二、macOS系统设置方法 设置定时关机取消关机计划 三、Linux系统设置方法 设置定时关机 取消关机计划 四、注意事项五、扩展&#x…...

固定公网 IP

固定公网 IP 是指为用户分配一个长期不变且可从互联网直接访问的 IP 地址&#xff0c;具有以下重要作用&#xff1a; 1. 搭建服务器 网站托管&#xff1a;可用于托管网站、博客或电子商务平台。 应用服务器&#xff1a;支持运行邮件服务器、游戏服务器、数据库等。 远程访问&…...

Linux安装go环境

安装一个lazydocker&#xff0c;根据文档需要先安装go环境 https://github.com/jesseduffield/lazydocker 官方文档解析 https://go.dev/doc/install 文档内容如下&#xff0c;一共三步 1.删除先前安装的go&#xff0c;解压下载的go压缩包到/usr/local目录 2.添加环境变量&…...

Git的基本使用

Git的基本使用 前言 &#xff1a;为什么使用GitGit基本操作1. 初始化2. Git分区3. 认识.git目录4. git基本操作 Git分支管理1. 基本操作2. Git分支设计规范 Git 标签管理1. Git标签的使用2. 标签使用规范3. Git标签与分支的区别 分离头指针问题1. 分离头指针问题的风险2. 分离头…...

鸿蒙Flutter开发故事:不,你不需要鸿蒙化

在华为牵头下&#xff0c;Flutter 鸿蒙化如火如荼进行&#xff0c;当第一次看到一份上百个插件的Excel 列表时&#xff0c;我也感到震惊&#xff0c;排名前 100 的插件赫然在列&#xff0c;这无疑是一次大规模的军团作战。 然后&#xff0c;参战团队鱼龙混杂&#xff0c;难免有…...

Mysql:关于命名

1. 命名的对象&#xff1a;库名、表名、列名、索引名 2. 用反引号包裹的情况下&#xff0c;命名时不允许使用空白字符、反引号&#xff0c;其它字符均可 3. 无反引号包裹的情况下&#xff0c;命名时仅允许使用&#xff1a;$、_、数字、大小写字母、中文字符(已知win系统支持)…...

JAVA————十五万字汇总

JAVA语言概述 JAVA语句结构 JAVA面向对象程序设计&#xff08;一&#xff09; JAVA面向对象程序设计&#xff08;二&#xff09; JAVA面向对象程序设计&#xff08;三&#xff09;工具类的实现 JAVA面向对象程序设计&#xff08;四&#xff09;录入异常处理 JAVA图形用户界面设…...

Chrome-Edge-IDEA-Win 常用插件-工具包

Chrome-Edge-IDEA-Win 常用插件-工具包 Chrome-Edge-IDEA-Win 常用插件-工具包谷歌插件chropathJSONViewOctotree - GitHub code treeXPath Helper书签侧边栏篡改猴Print Edit WEEdge浏览器插件IDEA插件CodeGlance Pro 代码迷你缩放图插件Alibaba Cloud ToolkitAlibaba Java Co…...

DeepSeek-R1论文深度解析:纯强化学习如何引爆LLM推理革命?

技术突破&#xff1a;从“无监督”到“自主进化”的跨越 paper &#xff1a;https://arxiv.org/pdf/2501.12948目录 技术突破&#xff1a;从“无监督”到“自主进化”的跨越1 DeepSeek-R1-Zero&#xff1a; RLnoSFT1.1 R1-Zero&#xff1a; GRPO&#xff08;Group Relative Po…...

最新!Ubuntu Docker 安装教程

源自: AINLPer&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2025-3-1 更多&#xff1a;>>>>大模型/AIGC、学术前沿的知识分享&#xff01; 看到很多部署大模型的时候&#xff0c;都是基于docker安装部署的。…...

【Javascrip】Javascript练习01 REST API using Express.js.

针对该问题的项目路径 要求部分 what you need to doReview the tasks provided in the section below.Obtain the boilerplate code.Use your local development environment to implement a solution.Upload your solution for marking via Gradescope. There is no attempt…...

visual studion 2022如何使用PlaySound()

书籍&#xff1a;《windows程序设计(第五版)》的开始 环境&#xff1a;visual studio 2022 内容&#xff1a;HELLOWIN程序 说明&#xff1a;以下内容大部分来自腾讯元宝。 在Visual Studio 2022中使用PlaySound()函数播放音频&#xff0c;需完成以下步骤&#xff1a; ​1. 配…...

C++相关基础概念之入门讲解(下)

1. 引用 ​ int main() {const int a10;int& aaa;aa;cout<<aa<<endl; } 引用 不是新定义一个变量&#xff0c;而 是给已存在变量取了一个别名 &#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量 共用同一块内存空间&#xff08;初…...

从零开始学可靠消息投递:分布式事务的“最终一致性”方案

一、什么是可靠消息投递&#xff1f;—— 消息队列的“防丢宝典” 可靠消息投递 是指通过消息队列&#xff08;如 RocketMQ&#xff09;确保消息在生产、传输、消费过程中不丢失、不重复、有序到达。其核心目标是在分布式系统中保障数据最终一致性&#xff0c;常用于订单处理、…...

生物化学笔记:医学免疫学原理 免疫系统的组成与功能+克隆选择学说

免疫系统的组成与功能 克隆选择学说 克隆选择学说&#xff08;Clonal Selection Theory&#xff09;是免疫学的核心理论之一&#xff0c;由 麦克法兰伯内特&#xff08;Frank Macfarlane Burnet&#xff09; 在 1957 年提出&#xff0c;用于解释特异性免疫反应的机制。 基本概…...

SpringBoot最佳实践之 - 使用AOP记录操作日志

1. 前言 本篇博客是个人在工作中遇到的需求。针对此需求&#xff0c;开发了具体的实现代码。并不是普适的记录操作日志的方式。以阅读本篇博客的朋友&#xff0c;可以参考此篇博客中记录日志的方式&#xff0c;可能会对你有些许帮助和启发。 2. 需求描述 有一个后台管理系统…...

MySql中 一条select语句的执行流程

一条 SELECT 语句的执行流程涉及到数据库管理系统&#xff08;DBMS&#xff09;的多个组件和阶段。以下是一个更为详细的执行流程&#xff0c;以关系型数据库&#xff08;如 MySQL、PostgreSQL 等&#xff09;为例&#xff1a; 1. 客户端发送查询 用户输入&#xff1a;用户在客…...

图论——kruskal算法

53. 寻宝(第七期模拟笔试) 题目描述 在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。 不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将 所有岛屿联通…...

【dify】 dify环境变量配置说明

这是一份Dify平台的环境变量配置文件&#xff0c;对平台的各项功能、服务和组件进行参数设置。以下是对其主要部分的详细解读&#xff1a; 1. 通用变量&#xff08;Common Variables&#xff09; CONSOLE_API_URL&#xff1a;控制台API的后端URL&#xff0c;用于拼接授权回调…...

如何在 Vue 项目中实现动态组件加载,有什么应用场景?

大白话如何在 Vue 项目中实现动态组件加载&#xff0c;有什么应用场景&#xff1f; 什么是动态组件加载 在 Vue 项目里&#xff0c;动态组件加载就是能够在程序运行时动态地决定要渲染哪个组件。打个比方&#xff0c;就像你去餐馆点菜&#xff0c;不同的时间你可能想吃不同的…...

FRP在物联网设备中的穿透方案

物联网设备常位于NAT后&#xff0c;FRP为其提供稳定穿透链路。 配置要点 轻量化部署&#xff1a;使用ARM版本FRP客户端&#xff0c;适配树莓派等设备9。 自启动脚本&#xff1a;通过systemd或crontab实现设备重启后自动连接26。 低功耗优化&#xff1a;调整心跳间隔&#xf…...

Android 13深度定制:SystemUI状态栏时间居中显示终极实战指南

一、架构设计与技术解析 1. SystemUI状态栏核心布局机制 层级结构 mermaid 复制 graph TDPhoneStatusBarView --> StatusBarContents[status_bar_contents]StatusBarContents --> LeftLayout[status_bar_left_side]StatusBarContents --> ClockLayout[Clock控件]Left…...

Python实战(3)-数据库操作

前面说过&#xff0c;可用的SQL数据库引擎有很多&#xff0c;它们都有相应的Python模块。这些数据库引擎大都作为服务器程序运行&#xff0c;连安装都需要有管理员权限。为降低Python DB API的使用门槛&#xff0c;我选择了一个名为SQLite的小型数据库引擎。它不需要作为独立的…...

【redis】在 Spring中操作 Redis

文章目录 基础设置依赖StringRedisTemplate库的封装 运行StringList删库 SetHashZset 基础设置 依赖 需要选择这个依赖 StringRedisTemplate // 后续 redis 测试的各种方法&#xff0c;都通过这个 Controller 提供的 http 接口来触发 RestController public class MyC…...

企业数据孤岛的纠结与恩怨

以下是关于控制中数据孤岛的纠结于恩怨&#xff1a; 一、工业控制中数据孤岛的定义 工业控制中的数据孤岛是指在工业生产过程中&#xff0c;各个生产环节、不同的系统或设备之间的数据相互独立、隔离&#xff0c;无法进行有效的共享和交互&#xff0c;形成了一个个相对封闭的数…...

在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18

作者&#xff1a;来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量&#xff0c;以适应大规模生产工作负载&#xff0c;例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中&#xff0c;我们探讨了如何使用 Elasticsearch 创建视觉搜…...

开发SAPUI5 Fiori应用并部署到SAP系统

首先新建一个项目文件夹 在VScode中打开 打开SAP Fiori&#xff08;需要先下载安装&#xff0c;参考上上一篇文章&#xff09; ,选择已添加的SAP S4 ERP系统 ,点击创建Firoi应用。 如果没有添加系统的&#xff0c;点击添加按钮&#xff0c;添加即可&#xff0c;注意&#xff…...

<C#> 详细介绍.net 三种依赖注入:AddTransient、AddScoped、AddSingleton 的区别

在 .NET 8 里&#xff0c;AddTransient、AddScoped 和 AddSingleton 均为依赖注入容器用于注册服务的方法&#xff0c;不过它们的生命周期管理方式存在差异。下面为你详细介绍这三种方法的区别。 1. AddTransient AddTransient 方法所注册的服务&#xff0c;每次被请求时都会…...

游戏引擎学习第168天

回顾并计划今天的内容 今天我们将进行一些思考工作&#xff0c;回顾一下之前的工作。我们已经在资产处理工具中提取了字体&#xff0c;并展示了如何使用该库。我们有两个版本&#xff0c;一个不使用任何库&#xff0c;适合想要完全不依赖库的用户&#xff1b; 我们今天的任务…...

html5炫酷3D立体文字效果实现详解

炫酷3D立体文字效果实现详解 这里写目录标题 炫酷3D立体文字效果实现详解项目概述技术实现要点1. 基础布局设置2. 动态背景效果3. 文字渐变效果4. 立体阴影效果5. 悬浮动画效果 技术难点及解决方案1. 文字渐变动画2. 立体阴影效果3. 性能优化 浏览器兼容性总结 项目概述 在这个…...

VSCode中搜索插件显示“提取扩展时出错。Failed to fetch”问题解决!

大致的问题如下&#xff0c;在VSCode的插件商店搜索插件时提示如下&#xff1a; 导致的情况有以下几点&#xff1a; 1、代理问题&#xff0c;如果是代理引起的&#xff0c;可以继续使用代理后也能搜索和安装插件。 2、还有可能是你的所连接的网络设置了防火墙&#xff0c;比较…...

回溯-单词搜索

79.单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平…...