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

线性DP - 学习笔记

动态规划:用空间代替重复计算。

有些递归在展开计算时,总是重复调用一个子问题的解,这种重复调用的递归变成动态规划很有收益。

如果每次展开都是不同的解,或者重复调用的现象很少,那么没有改动态规划的必要。

任何动态规划问题都一定对应着一个重复调用行为的递归。

所以任何动态规划的题目都一定可以从递归入手,逐渐实现动态规划的方法。

例题一:斐波那契数

题目链接

实际难度:\(\color{F39C11}{{普及-}}\)

考察知识点

  • 动态规划 - 线性DP

思路分析(递归)

由斐波那契数列:\(f_i= \begin{cases} 0,&i=0\\ 1,&i=1\\ f_{i-2}+f_{i-1}, &i \ge 2 \end{cases}\) 可得,对于每一个 \(f_i(i \ge 2)\),只需要求出 \(f_{i-1}\)\(f_{i-2}\) 即可。

如图所示:

即可求出 \(f_3\) 的值。

复杂度分析(递归)

时间复杂度

\[\begin{aligned} T(n)&=\underbrace{T(n-1)+T(n-2)}_{递归}\\ &=O(2^n) \end{aligned} \]

空间复杂度

  • 主要存储:\(O(n)\)
  • 临时变量:\(O(1)\)
  • 总空间:\(O(n)\)

C++代码

// Problem: 509. 斐波那契数
// Contest: LeetCode
// URL: https://leetcode.cn/problems/fibonacci-number/
// 
// Powered by CP Editor (https://cpeditor.org)// 定义一个名为Solution的类,用于封装斐波那契数的求解方法
class Solution {
// 公有成员区域,表明以下函数可以被类外部调用
public:// 定义一个递归辅助函数f,参数i为需要计算的斐波那契数的索引,返回值为对应的斐波那契数int f(int i){// 递归终止条件1:当索引i为0时,根据斐波那契数定义,返回0if(i==0) return 0;// 递归终止条件2:当索引i为1时,根据斐波那契数定义,返回1if(i==1) return 1;// 递归计算:第i个斐波那契数等于第i-1个与第i-2个斐波那契数之和,返回计算结果return f(i-1)+f(i-2);}// 定义LeetCode要求的接口函数fib,参数n为目标斐波那契数的索引,返回对应的斐波那契数int fib(int n) {// 调用辅助函数f计算第n个斐波那契数,并返回结果return f(n);}
};
http://www.gsyq.cn/news/14314.html

相关文章:

  • debian11不进入桌面环境打开chromiu
  • 2025 年阿里巴巴开通实力商家店铺开通代运营 / 阿里巴巴新手开店全托管代运营公司推荐:南鑫粤网络 —— 全域运营解决方案与实战服务优势解析
  • ClickHouse 窗口函数使用详解(一) - 若
  • 2025 年杀虫公司联系方式推荐 天津万康:靶向消杀 + 1 年质保 300 + 政企认可的虫害防控专家
  • js中?? 和 || 的区别详解
  • 直击现场! “ 直通乌镇 ”开源赛复赛收官,OpenCSG担任评委,十强藏着哪些产业机会?
  • Python 列表生成式、字典生成式与生成器表达式
  • 【读书笔记】架构整洁之道 P5-2 软件架构 - 教程
  • 回忆中学的函数
  • 【qml-12】Quick3D达成机器人鼠标拖拽转换视角(无限角度)与滚轮缩放
  • 倍增思想与其优化
  • 2025 年 AI 健康管理领域推荐深护智康,社区、基层公卫、母婴 AI 健康管理、AI + 大健康管理、AI 健康管理师公司推荐
  • 从“看得见”到“能决策”:Operation Intelligence 重构企业智能运维新范式
  • 单链表实现队列
  • 064_尚硅谷_短路与和短路或
  • 2025年陶瓷定制企业最新推荐榜单:涵盖电子陶瓷,氧化铝陶瓷,氧化锆陶瓷,氮化铝陶瓷,结构陶瓷领域!
  • 实用指南:计算机网络-ipv4首部校验原理
  • 2025 年人工智能培训厂家最新推荐排行榜:聚焦人工智能培训合规运营机构、产业适配能力与教学实力深度解析
  • 2025最新布袋包装厂家推荐排行榜:布袋包装,布袋,手提袋,帆布袋定制,无纺布袋,布袋生产,云南布袋包装,茶叶布袋生产商优选指南
  • 城市电商小程序管理系统:助力商家搭建全渠道数字化经营体系
  • L05_新建springboot项目与新建helloword(菜鸟版)
  • 实用指南:智慧外贸平台|基于Java+vue的智慧外贸平台系统(源码+数据库+文档)
  • ObservableCollection子项属性字段值变化的监听处理
  • 2025年破碎机厂家最新权威推荐榜:破碎机实力厂商技术服务全景评测及选购指南
  • 什么关系?就是ajax与jQuery
  • 2025年沈阳标识标牌厂家最新推荐榜单:涵盖订做标识标牌,广告标识标牌,安全出口标识标牌、不锈钢等多类型标识,全面解读企业产能与技术实力
  • 一文详解决策树:ID3与C4.5算法 - 详解
  • 详细介绍:Java数据结构第二十七期:布隆过滤器,用 “模糊” 换高效的查重黑科技
  • 【MacOS】彻底卸载Navicat
  • JUC:AQS