【记忆化搜索】

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:那个传说中的man的主页
🏠个人专栏:题目解析
🌎推荐文章:【LeetCode】winter vacation training

在这里插入图片描述


前言
记忆化搜索是一种优化搜索算法的方法,它可以有效地减少重复计算和提高算法效率。该算法通过使用一个缓存数据结构来存储之前计算过的结果,避免了重复计算相同的问题,从而提高了搜索效率。

具体来说,记忆化搜索通常使用递归算法实现。在每次递归调用时,检查缓存中是否已经存储了当前问题的解。如果是,则直接返回缓存中的结果;否则,计算当前问题的解,并将其存储到缓存中,然后返回结果
在这里插入图片描述


目录

  • 👉🏻斐波那契数
    • 记忆化搜索与常规动态规划
  • 👉🏻不同路径
  • 👉🏻最长递增子序列
    • 递归暴搜(超出时间限制)
    • 记忆化搜索优化递归时间

👉🏻斐波那契数

原题链接:斐波那契数

mycode:

class Solution {
public:int memory[101];//备忘录int dfs(int n){if(memory[n]!=-1){return memory[n];}if(n<2){memory[n] = n;return n;}else{memory[n] = fib(n-1)+fib(n-2);return memory[n];}}int fib(int n) {memset(memory,-1,sizeof(memory));return dfs(n);}};

记忆化搜索与常规动态规划

在这里插入图片描述
在这里插入图片描述

👉🏻不同路径

原题链接:不同路径

mycode:

class Solution {
public:int memo[101][101];//备忘录int dfs(int m,int n){if(memo[m][n]!=0){return memo[m][n];}if(m==0||n==0) return 0;if(m==1&&n==1){memo[m][n] = 1;return memo[m][n];}else{memo[m][n] = dfs(m-1,n)+dfs(m,n-1);return memo[m][n];}}int uniquePaths(int m, int n) {memset(memo,0,sizeof(memo));return dfs(m,n);}
};

👉🏻最长递增子序列

原题链接:最长递增子序列

递归暴搜(超出时间限制)

mycode:

class Solution {
public:int dfs(vector<int>& nums,int pos){int ret = 1;for(int i = pos+1;i<nums.size();i++){if(nums[i]>nums[pos]){ret = max(dfs(nums,i)+1,ret);}}return ret;}int lengthOfLIS(vector<int>& nums) {int ret = 0;for(int i = 0;i<nums.size();i++){ret = max(ret,dfs(nums,i));}return ret;}
};

记忆化搜索优化递归时间

class Solution {
public:int dfs(vector<int>& nums,int pos,vector<int>& memo){if(memo[pos]!=0) return memo[pos];int ret = 1;for(int i = pos+1;i<nums.size();i++){if(nums[i]>nums[pos]){ret = max(dfs(nums,i,memo)+1,ret);}}memo[pos] = ret;return ret;}int lengthOfLIS(vector<int>& nums) {int ret = 0;vector<int> memo(nums.size());//备忘录for(int i = 0;i<nums.size();i++){ret = max(ret,dfs(nums,i,memo));}return ret;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于JavaWeb+BS架构+SpringBoot+Vue基于hive旅游数据的分析与应用系统的设计和实现

基于JavaWebBS架构SpringBootVue基于hive旅游数据的分析与应用系统的设计和实现 文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 文末获取源码 Lun文目录 1 概 述 5 1.1 研究背景 5 1.2 研究意义 5 1.3 研究内容…

Java实现二维码、条形码生成器

文章目录 前言 在数字化时代&#xff0c;二维码已经成为了信息交流的一种常见方式。它们被广泛用于各种应用&#xff0c;从产品标签到活动传单&#xff0c;以及电子支付。本文将向您展示如何在Spring Boot应用程序中整合ZXing库&#xff0c;以创建和解析QR码。无论您是想为您的…

常用文件文档能做二维码吗?多种文件在线做二维码的方法

二维码是现在工作和生活中随处可见&#xff0c;可以用来展现很多不同的内容。现在很多下发通知的文件、教程或者其他文件内容&#xff0c;也会制作成二维码图片后&#xff0c;让其他人通过扫码来获取文件内容。最简单的制作方法就是通过二维码生成器来制作&#xff0c;支持多种…

【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II

作者推荐 【矩阵快速幂】封装类及测试用例及样例 本文涉及的基础知识点 二分查找算法合集 LeetCode100207. 找出数组中的美丽下标 II 给你一个下标从 0 开始的字符串 s 、字符串 a 、字符串 b 和一个整数 k 。 如果下标 i 满足以下条件&#xff0c;则认为它是一个 美丽下标…

usb个人总结

一、usb工具分析 1、不同的usb抓包工具抓包分析 2、USB抓包分析方式 外接usb分析仪分析 &#xff08;1&#xff09;力科usb分析仪 &#xff08;2&#xff09;HD-USB12 协议分析仪 &#xff08;3&#xff09;沁恒CH552 usb分析仪&#xff0c;软件工具USB2.0 Monitor (4)等等…

RICHARD MILLE 理查米尔顶级制表技艺典范之作:RM 35-03腕表

瑞士高端制表品牌RICHARD MILLE(理查米尔)在腕表界拥有着卓越的地位,其材质、技术、设计、品质以及服务独树一帜,皆被认为是顶级水平的代表,经典作品数不胜数。而即使在众多经典之作中,RM 35-03 Rafael Nadal 自动上链腕表仍以独特蝶形摆陀和强大性能备受用户推崇,被誉为“RICH…

2024三掌柜赠书活动第三期:Rust系统编程

目录 前言 Rust语言概念 关于《Rust系统编程》 Rust系统编程的核心点 Rust系统编程的关键技术和工具 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《Rust系统编程》全书速览 结束语 前言 在技术圈&#xff0c;最近的编程语言新秀当属Rust莫属&#xff0c;R…

2024 解决matplotlib中文字体问题

第一种代码&#xff08;失败代码&#xff09; import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.font_manager import FontPropertiesfont_path /Users/huangbaixi/Desktop/SimHei.ttfdef plot_demo():#print(mpl.get_cachedir())# 绘制折线图font…

操作系统导论-课后作业-ch5

关于man的使用 man 系统参考手册 man n name 在系统手册第n章查看name1. 代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h>int main() {int x 100;int rc fork();if (rc -1) {fprintf…

16位单片机单片机S1C17153

16位单片机单片机 .16KB ROM / 2KB内存 * S1C17653对于程序开发很有用。 .产生具有内置振荡器的操作时钟。 - OSC3B振荡器电路&#xff1a;2MHz/1MHz/500kHz&#xff08;类型&#xff09;内部振荡器电路 -OSC1无振荡器电路&#xff1a;32.768 kHz&#xff08;类型&#xf…

SSL证书与HTTPS的关系

SSL证书是一种数字证书&#xff0c;由权威的证书颁发机构颁发。它包含了一个公钥和有关证书所有者的一些信息&#xff0c;如名称、组织、邮箱等。SSL证书的主要作用是实现数据加密和身份验证&#xff0c;确保数据在传输过程中的安全性和完整性。 HTTPS是一种基于HTTP协议的安全…

༺༽༾ཊ—游戏-01_2D-开发—ཏ༿༼༻

首先利用安装好的Unity Hub创建一个unity 2D&#xff08;URP渲染管线&#xff09;项目 选择个人喜欢的操作格局&#xff08;这里采用2 by 3&#xff09; 在Project项目管理中将双栏改为单栏模式&#xff08;个人喜好&#xff09; 找到首选项&#xff08;Preferences&#xff09…

Django教程第4章 | Web开发实战-三种验证码实现

系列&#xff1a;Django学习教程 验证码的存在是为了防止系统被暴力破解攻击&#xff0c;几乎每个系统都有验证码。下面将介绍三种生成验证码方式。 您可以根据你自己的需要进行学习。 手动生成验证码 安装绘图依赖&#xff0c;利用的是画图模块 PIL 以及随机模块 random 在后…

鸿蒙开发-UI-布局-线性布局

鸿蒙开发-序言 鸿蒙开发-工具 鸿蒙开发-初体验 鸿蒙开发-运行机制 鸿蒙开发-运行机制-Stage模型 鸿蒙开发-UI 鸿蒙开发-UI-组件 鸿蒙开发-UI-组件-状态管理 鸿蒙开发-UI-应用-状态管理 鸿蒙开发-UI-渲染控制 鸿蒙开发-UI-布局 文章目录 前言 一、基本概念 二、布局子元素 1.子元…

User-Agent(用户代理)是什么?

User-Agent&#xff08;用户代理&#xff09;是什么&#xff1f; User-Agent 即用户代理&#xff0c;简称“UA”&#xff0c;它是一个特殊字符串头。网站服务器通过识别 “UA”来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息。而网站服务器则通过判断 UA 来给客…

Hotspot源码解析-第十九章-ClassLoaderData、符号表、字符串表的初始化

第十九章-ClassLoaderData初始化 讲解本章先从一张图开始 众所周知&#xff0c;Java类的相关信息都是存储在元空间中的&#xff0c;但是是怎么存储的&#xff0c;相信很多读者是不清楚的&#xff0c;这里就不得不涉及到ClassLoaderDataGraph、classLoader、classLoaderData&…

MIT 6s081 lab 5: xv6 lazy page allocation

Page faults Basic 通过page fault可以实现一系列的虚拟内存功能&#xff1a; lazy allocationcopy-on-write forkdemand pagingmemory mapped files 虚拟内存的两个主要的优点&#xff1a; 1、隔离性&#xff1a;每个应用程序拥有自己的地址空间&#xff0c;因此不可能修…

【Dart】=> [06] Dart初体验-类Class-构造函数-继承-mixin-异步编程-链式调用-泛型-异常

目录 能够定义并使用Dart的类类的定义构造函数私有属性和方法继承mixin异步编程FutureFuture链式调用async - awaitdynamic类型泛型异常 能够定义并使用Dart的类 Dart是一门面向对象的编程语言&#xff0c;所有的对象都是类的实例 通过类我们可以对数据和方法进行封装复用 学习…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (1) | 引言与知识基础

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

NLP论文阅读记录 - 2022 | WOS 用于摘要法律文本的有效深度学习方法

文章目录 前言0、论文摘要一、Introduction1.1目标问题 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结 前言 Effective deep learning approaches for summarization of legal texts&#xff08;22&#x…