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

动态规划入门:从斐波那契到爬楼梯

一、上期回顾掌握回溯 DFS子集、组合、全排列、回溯模板、剪枝去重解决暴力枚举类搜索题。今天进入算法天花板模块动态规划 DP从最简单入门题开始建立 DP 思维。二、动态规划核心思想大事化小把大问题拆成多个相同的小问题保存历史结果用数组 dp 记录子问题答案避免重复计算由小推大从小状态推出大状态核心重叠子问题 最优子结构 无后效性一句话递归暴力会重复算→用数组存中间结果→递推得出答案三、DP 解题标准四步法必背确定 dp 数组含义dp [i] 代表什么状态推导状态转移方程dp[i] ?确定初始化dp [0]、dp [1] 初始值确定遍历顺序从前到后 / 从后往前四、入门例题 1斐波那契数列1. dp 定义dp [i]第 i 个斐波那契数2. 转移方程dp[i] dp[i-1] dp[i-2]3. 初始化dp[0]0dp[1]14. 代码#include iostream #include vector using namespace std; int fib(int n) { if(n 1) return n; vectorint dp(n1); dp[0] 0; dp[1] 1; for(int i 2; i n; i) { dp[i] dp[i-1] dp[i-2]; } return dp[n]; } int main() { cout fib(10); return 0; }五、入门例题 2爬楼梯最经典 DP 入门题目一次爬 1 阶或 2 阶求爬到 n 阶多少种方法思路dp [i]到第 i 阶的方法数最后一步要么 1 阶、要么 2 阶转移dp[i] dp[i-1] dp[i-2]int climbStairs(int n) { if(n 2) return n; vectorint dp(n1); dp[1] 1; dp[2] 2; for(int i 3; i n; i) { dp[i] dp[i-1] dp[i-2]; } return dp[n]; }六、空间优化滚动变量常数空间DP 很多题可以不用数组只用两个变量int climbStairs(int n) { if(n2) return n; int a1,b2,c; for(int i3;in;i) { c ab; a b; b c; } return b; }七、一维 DP 进阶打家劫舍不能偷相邻房间求最大金额dp [i]前 i 间房最大金额选当前dp [i-2]nums [i]不选当前dp [i-1]转移dp[i] max(dp[i-1], dp[i-2]nums[i])八、今日核心总结DP 核心拆分子问题 记录状态 状态转移固定四步定 dp 含义→写转移→初始化→遍历入门一维 DP斐波那契、爬楼梯、打家劫舍一维 DP 大多可以用两个变量做空间优化递归是自顶向下DP 递推是自底向上九、课后练习用 DP 手写斐波那契数列独立写出爬楼梯完整 DP 代码尝试用常数空间优化代码
http://www.zskr.cn/news/1323775.html

相关文章:

  • Phonon声学模拟SDK:从原理到实战,打造沉浸式空间音频
  • Perplexity认证考试倒计时72小时:92.3%通过者都在用的5个实战技巧(含真题还原库)
  • 从GPIO入手,深度解析HPM6750 RISC-V MCU开发板底层驱动与实战技巧
  • 避坑指南:用MATLAB Coder生成工业级C代码时,你可能会遇到的5个典型问题及解决方案
  • 提高动态视频三维实时重构技术精度的方法
  • 三个规范驱动SDLC工具实测报告
  • Boomi 与 Gong 达成合作,将 Revenue AI 引入 Boomi Agentstudio
  • 工业作业火花识别 工业作业安全监测 工业安全火灾识别 火灾烟雾识别
  • 嵌入式Linux无线AP搭建实战:hostapd与udhcpd配置详解
  • 阿克曼底盘:机器人移动平台的高效稳定选择与工程实践
  • RAG学习笔记:为什么攻击力大于50这种问题不该只靠RAG
  • 别再手动改参考格式!Perplexity自动引文生成机制首次逆向解析(含BibTeX/CSL底层适配逻辑)
  • 2026年照片去水印怎么操作?免费软件app优缺点全测评|推荐这4款最实用的工具
  • 别再死记硬背了!用UC3842芯片搭建开关电源,保姆级调试避坑指南
  • DeepSeek总结的DuckDB CLAUDE.md
  • Linux驱动开发核心:从字符设备接口到中断与并发控制
  • 从零开始手把手带你理解CVA6处理器的前端流水线(PC生成与分支预测篇)
  • 番茄小说下载器:打造你的个人数字图书馆终极方案
  • 如何让GitHub下载速度提升10倍:Fast-GitHub完全使用指南
  • 从‘小霸王’到5G:图解计算机网络发展史,看IP地址和MAC地址是怎么来的
  • API设计全解析:从RESTful到gRPC,构建高效软件协作桥梁
  • 从‘标量’到‘数组’:Python新手在NumPy里踩坑的5个真实场景
  • 专业的北京宴请素食推荐哪个靠谱 - 品牌企业推荐师(官方)
  • C#正课十七
  • 农业采摘机器人技术解析:从视觉感知到灵巧执行的全链路实践
  • Win11下WSL2安装报错0x80370102?别慌,这5步排查法帮你搞定(附Hyper-V与VMware兼容性调整)
  • 3大核心功能+5步工作流:BiliDownloader高效下载B站视频完全指南
  • RT-Thread USB HID设备数据发送失败排查:ops参数与报告ID的深度解析
  • 在Trae 运行、调试这个项目的时候,我发现有些python子进程内存占用超过32G,导致系统内存跑超到100% 。是否项目存在内存泄漏的隐患?我应该怎么让Trae去处理呢?请给我发给Trae的指令
  • 书成紫微动,律定凤凰驯:海棠山铁哥行天道,一书一标定人间秩序