【遞歸,搜索與回溯算法篇】- 名詞解釋

在這里插入圖片描述

一. 遞歸

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. 剪枝策略:
  • 可行性剪枝: 當前路徑明顯不滿足約束時終止
  • 去重剪枝: 避免生成重復解
  • 最優解剪枝: 在求最優解時,若當前路徑已劣于已知最優解,提前終止

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898589.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

條件變量,鎖,共享數據的關系

條件變量、共享數據和鎖之間的三方耦合關系源于多線程環境下對資源訪問的同步需求。以下是關鍵點分析: 條件變量中通常會對共享數據進行判斷和處理,如果不加鎖就會出現數據競爭的問題,所以并不是條件變量要跟鎖一起使用,而是上鎖為…

大屏技術匯集【目錄】

Cesium 自從首次發布以來,經歷了多個版本的迭代和更新,每個版本都帶來了性能改進、新功能添加以及對現有功能的優化。以下是 Cesium 一些重要版本及其主要特點: 主要版本概述 Cesium 1.0 (2012年) 初始版本發布,確立了Cesium作為…

圖解AUTOSAR_CP_EEPROM_Abstraction

AUTOSAR EEPROM抽象模塊詳細說明 基于AUTOSAR標準的EEPROM抽象層技術解析 目錄 1. 概述 1.1 核心功能1.2 模塊地位2. 架構概覽 2.1 架構層次2.2 模塊交互3. 配置結構 3.1 主要配置容器3.2 關鍵配置參數4. 狀態管理 4.1 基本狀態4.2 狀態轉換5. 接口設計 5.1 主要接口分類5.2 接…

C++相關基礎概念之入門講解(下)

1. 引用 ? int main() {const int a10;int& aaa;aa;cout<<aa<<endl; } 引用 不是新定義一個變量&#xff0c;而 是給已存在變量取了一個別名 &#xff0c;編譯器不會為引用變量開辟內存空 間&#xff0c;它和它引用的變量 共用同一塊內存空間&#xff08;初…

注意力機制,本質上是在做什么?

本文以自注意機制為例&#xff0c;輸入一個4*4的矩陣 如下&#xff1a; input_datatorch.tensor([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16] ],dtypetorch.float) 得到Q和K的轉置如下。 此時&#xff0c;計算QK^T ,得到如下結果 第一行第一個位置就是第一條樣本和第…

記一次wsl2+docker無法運行的經歷

前情提要 由于某個大創項目的需要和對貓娘機器人的迫切渴求&#xff08;bushi 需要在電腦里面安裝docker desktop。由于電腦里面安裝了wsl2環境 因此決定使用wsl2dockerdesktop的方式配置docker 遇到的問題 在像往常一樣安裝docker desktop并且啟動時 提示錯誤&#xff1a; …

PageHelper插件依賴引入不報錯,但用不了

情況: 父模塊pom. Xml 引入1. 4. 0以上版本的pagehelper-spring-boot-starter。 要用到插件的子模塊&#xff0c;去掉版本號&#xff0c;引入和父模塊一樣的依賴。 引入成功&#xff0c;沒有報錯&#xff0c;但是打開右邊的maven里面沒有找到PageHelper插件。 終端清空并重…

Windows搭建免翻墻的BatteryHistorian

文章參考 GitCode - 全球開發者的開源社區,開源代碼托管平臺 免翻墻的BatteryHistorian主要原理&#xff1a;修改go源碼 1.安裝Java環境 1.點擊下載 Java JDK&#xff0c;并安裝,一路next 2.java -version 檢驗是否安裝成功 2.安裝Git工具 1、點擊下載 Git&#xff0c;并…

項目中pnpm版本和全局pnpm版本不一致

項目中pnpm版本和全局pnpm版本不一致 檢查package.json中&#xff0c;是否存在"packageManager": “pnpm8.6.10”&#xff0c;限制了pnpm的版本。

透析Vue的nextTick原理

nextTick 是 Vue.js 中的一個核心機制&#xff0c;用于在 下一次 DOM 更新周期后 執行回調函數。它的核心原理是 利用 JavaScript 的事件循環機制&#xff08;Event Loop&#xff09;&#xff0c;結合微任務&#xff08;Microtask&#xff09;或宏任務&#xff08;Macrotask&am…

WRF/Chem 模式技術解讀:為大氣污染治理提供有力支撐

技術點目錄 第一部分、WRF-Chem模式應用案例和理論基礎第二部分、Linux環境配置及WRF-CHEM第三部分、WRF-Chem模式編譯&#xff0c;排放源制作第四部分、WRF-Chem數據準備&#xff08;氣象、排放、初邊界條件等&#xff09;&#xff0c;案例實踐第五部分、模擬結果提取、數據可…

ccfcsp2701如此編碼

//如此編碼 #include<iostream> using namespace std; int main(){int n,m;cin>>n>>m;int a[21],b[21],c[21];for(int i1;i<n;i){cin>>a[i];}c[0]1;for(int i1;i<n;i){c[i]c[i-1]*a[i];}b[1](m%c[1])/c[0];int s1,s20;for(int i2;i<n;i){s2s2…

74HC04(反相器)和74HC14(反相器、施密特觸發器)的區別

74HC04和74HC14的具體區別詳解 同樣具有反相器功能&#xff0c;你知道74HC04和74HC14的具體區別嗎&#xff1f; 74HC04 對于74HC04很好理解&#xff0c;輸入低電平&#xff0c;輸出高電平&#xff1b;輸入高電平&#xff0c;輸出低電平。 建議操作條件&#xff1a; 下圖是TI的…

如何緩解大語言模型推理中的“幻覺”(Hallucination)?

目錄 如何緩解大語言模型推理中的“幻覺”&#xff08;Hallucination&#xff09;&#xff1f; 1. 什么是大語言模型的“幻覺”&#xff08;Hallucination&#xff09;&#xff1f; 幻覺的常見類型 2. 如何緩解大模型的幻覺問題&#xff1f; 方法 1&#xff1a;使用知識檢索…

Linux權限管理詳解

Linux權限管理系統 Linux作為一個多用戶操作系統&#xff0c;其權限管理系統是保障系統安全的重要組成部分。通過合理設置文件和目錄的權限&#xff0c;可以有效控制用戶對系統資源的訪問。 一、基本權限概念 Linux系統中的權限分為三類&#xff1a; 讀權限(r)&#xff1a;…

第十四次CCF-CSP認證(含C++源碼)

第十四次CCF-CSP認證 賣菜滿分思路 買菜滿分思路 再賣菜滿分題解&#xff08;差分約束&#xff09;solution 1(枚舉 correct but 超時)solution 2(正解) 賣菜 題目鏈接 滿分思路 就是模擬一下這個調整第二天菜價的過程&#xff0c;其中對于兩種只有一個鄰居的情況下做出調整&…

CCBCISCN復盤

AWDP – ccfrum 自己搭了一下環境, 復現一下這道題目, 之前比賽的時候完全沒想到這個漏洞要怎么打, 修也不知道要怎么修, 就僅僅是對用戶名的賬號和密碼進行了一下過濾, 完全沒起到作用, 唉, 實在太菜 如果想要嘗試復現的話可以嘗試拉取這個鏡像, 我打完之后就直接把這個容器給…

(每日一道算法題)交易逆序對的總數

LCR 170. 交易逆序對的總數 - 力扣&#xff08;LeetCode&#xff09; 在股票交易中&#xff0c;如果前一天的股價高于后一天的股價&#xff0c;則可以認為存在一個「交易逆序對」。請設計一個程序&#xff0c;輸入一段時間內的股票交易記錄 record&#xff0c;返回其中存在的「…

【操作系統】共享數據的競爭問題

共享數據的競爭問題 問題&#xff1a;保護中斷與主程序共享的avg_data方法一&#xff1a;使用關中斷保護1. 添加關中斷宏2. 修改數據讀取代碼3. 修改中斷服務程序&#xff08;ISR&#xff09; 方法二&#xff1a;使用原子操作&#xff08;需平臺支持&#xff09;1. 定義原子類型…

VS010生成可由MATLAB2016調用的DLL文件方法

親測實用&#xff0c;不用配置雜七雜八的依賴項 1&#xff1a;新建Win32的DLL輸出項目 2&#xff1a;修改為release模式 3&#xff1a;添加calc.cpp文件&#xff0c;即要導出的函數myadd&#xff1a; #include "calc.h" __declspec(dllexport) int myadd(int a,in…