张小明 2026/1/1 15:20:41
网站设计制作在哪能看,鞍山58同城,怎么管理好自己的网站,网站推广效果如何从递归/记忆化搜索入手动态规划
在入门动态规划时#xff0c;记忆化搜索往往比递推形式更容易想。可以先写出记忆化搜索#xff0c;再转为递推形式。
记忆化搜索很好用#xff0c;但并不是万能的#xff0c;某些题目只有写成递推#xff0c;才能结合数据结构等来优化时间…从递归/记忆化搜索入手动态规划在入门动态规划时记忆化搜索往往比递推形式更容易想。可以先写出记忆化搜索再转为递推形式。记忆化搜索很好用但并不是万能的某些题目只有写成递推才能结合数据结构等来优化时间复杂度多数题目还可以优化空间复杂度。力扣 509. 斐波那契数洛谷 P1048 「NOIP 2005 普及组」 采药下面以斐波那契为例暴力搜索很容易实现这样一个朴素的搜索做法publicstaticintf1(inti){if(i0){return0;}if(i1){return1;}returnf1(i-1)f1(i-2);}时间复杂度O ( 2 n ) O(2^n)O(2n)。搜索树可以近似为一棵二叉树树高为 n节点个数为O ( 2 n ) O(2^n)O(2n)。空间复杂度O ( n ) O(n)O(n)。递归需要O ( n ) O(n)O(n)的栈空间。这种做法的时间复杂度是指数级别的不是我们希望的。记忆化搜索上面的做法为什么效率低下呢因为同一个状态会被访问多次。记忆化搜索是一种通过记录已经遍历过的状态的信息从而避免对同一状态重复遍历的搜索实现方式。这充分利用了动态规划中很多问题具有大量重叠子问题的特点属于用空间换时间的「记忆化」思想。// memo 为记忆化数组初始化为 -1publicstaticintf2(inti,int[]memo){if(i0){return0;}if(i1){return1;}if(memo[i]!-1){returnmemo[i];}intansf2(i-1,memo)f2(i-2,memo);memo[i]ans;returnans;}时间复杂度O ( n ) O(n)O(n)。动态规划的时间复杂度 状态个数 × 单个状态的计算时间且每个状态只会计算一次。或者可以这样理解记忆化搜索的递归树可以想象为一颗左斜树但每个节点都有一个长度为 1 的右子树用了记忆化所以是不展开的小毛刺于是时间复杂度 O ( 2 n ) O(2n)O(2n)O ( n ) O(n)O(n)。空间复杂度O ( n ) O(n)O(n)。memo数组。递推在求解动态规划的问题时记忆化搜索与递推的代码在形式上是高度类似的。这是由于它们使用了相同的状态表示方式和类似的状态转移。一般来说两种实现的时间复杂度是一样的。publicstaticintfib3(intn){if(n0){return0;}if(n1){return1;}int[]fnewint[n1];f[1]1;for(inti2;in;i){f[i]f[i-1]f[i-2];}returnf[n];}时间复杂度O ( n ) O(n)O(n)。空间复杂度O ( n ) O(n)O(n)。在求解动态规划的问题时记忆化搜索和递推都确保了同一状态至多只被求解一次。但实现的策略有所不同递推通过设置明确的访问顺序来避免重复访问记忆化搜索通过给已经访问过的状态打标记的方式也达到了同样的目的。与递推相比记忆化搜索因为不用明确规定访问顺序在实现难度上有时低于递推且能比较方便地处理边界情况这是记忆化搜索的一大优势。但与此同时记忆化搜索难以使用滚动数组数据结构等优化且由于存在递归运行效率会低于递推。优化观察状态转移方程发现一旦算出 f[i]那么 f[i−2] 及其左边的状态就永远不会用到了于是我们可以用几个变量把空间复杂度优化成O ( 1 ) O(1)O(1)。publicintfib(intn){if(n0){return0;}if(n1){return1;}intf00,f11;for(inti2;in;i){intnewFf0f1;f0f1;f1newF;}returnf1;}以下是我认为最有代表性的一些题。爬楼梯通常可以用「枚举选哪个」的搜索思想。力扣 70. 爬楼梯力扣 2266. 统计打字方案数 每次可以爬 3 或 4 层打家劫舍通常可以用「选或不选」的搜索思想。力扣198. 打家劫舍 从最左或最右切入可以简化问题力扣 740. 删除并获得点数 值域打家劫舍力扣 3186. 施咒的最大总伤害 数据规模更大的 值域打家劫舍力扣 2140. 解决智力问题 刷表法用现在的状态更新未来的状态。与之对比的是查表法用之前的状态计算当前的状态
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站的收费标准wordpress源码学习
1. 为什么这个毕设项目值得你 pick ?安全检查巡视智慧管理系统将会员管理、设备管理、车辆管理和各类巡检任务关联起来,提供全面的分析和报告功能。该系统区别于传统的“烂大街”选题,在技术创新性和实用性方面具有明显优势:通过智能化的数据…
外贸网站 备案拼多多网站怎么做的
HuggingFace镜像网站推荐列表:国内高速下载Seed-Coder-8B-Base 在现代软件开发节奏日益加快的背景下,开发者对效率工具的要求已经从“辅助”转向“智能协同”。尤其是大模型技术的爆发式发展,让AI写代码不再是科幻场景——像GitHub Copilot这…
衣服搭配网站建设导购网站开发
摘 要 自动售货机是自动化技术在人们生活中的重要应用。随着人们生活质量的不断提高,对自动售货机的性能要求越来越高。自动售货机的主要功能是通过人机对话的形式完成自动售货这一过程。 本文设计了一款以INTEL公司出品的80C51单片机为核心的自动售货机,并且着重详…
如何做配送网站贵港网站制作
C#调用FLUX.1-dev模型API:Windows环境下AI集成实践 在当今智能应用快速演进的背景下,越来越多的企业希望将前沿AI能力无缝嵌入现有的业务系统中。尤其是图像生成技术——从一段文字自动生成高质量视觉内容的能力——正逐步被应用于设计辅助、营销素材制作…
网站开发保密合同企业注册网站
目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…