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

算法---动态规划(持续更新学习)

1.动态规划的经典问题

(1)动规基础:爬楼梯、斐波那契数列
(2)背包问题:0-1背包,多重背包
(3)打家劫舍
(4)股票问题
(5)子序列问题

2.动态规划的思路流程

(1)dp数据定义和下标的定义
(2)递推公式
(3)dp数组如何初始化
(4)遍历顺序
(5)打印顺序

3.0-1背包

(1)0-1背包,有n种物品,每种物品都只有1个,每个物品有自己的重量和价值,有一个重量为m的背包,问这个背包最多能装价值为多少的物品。
物品0 1 (重量) 15(价值)
物品1 3 (重量) 40(价值)
物品2 4 (重量) 30(价值)
背包最大重量是4。
装满这个背包的最大价值是?
1)dp数组定义和下标定义
dp[i][j],编号下标为[0,i]的物品放进容量为j的背包里。
2)递推公式
dp[i][j]可以从哪几个方向推导出来
dp[i-1][j]:不放物品i
dp[i-1][j-weight[i]]+value[i] :放物品i(不放物品i背包的最大价值:背包的容量-放物品i的重量)
dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]+value)
3)dp数组如何初始化
正常的初始化是
在这里插入图片描述

当背包容量是0的时候,物品0、物品1、物品2都不能放入到背包中。我们假设物品0的重量是2,索引当背包容量是0和背包容量是1的时候物品都放不来,使用前两列第一行初始化为0。
在这里插入图片描述

4)遍历顺序
对于二维数组的0-1背包问题,可以颠倒两个for循环的顺序,先遍历背包和先遍历物品都是没差别的。因为取一个元素,当前元素都是由正上方和左上方推导出来。
5)打印顺序

http://www.xdnf.cn/news/19358.html

相关文章:

  • k230 按键拍照后,将摄像头拍照的1920*1080分辨率的图片以jpg文件格式,保存到板载TF存储卡的指定文件夹目录中
  • 营业执照经营范围行业提取工具库项目方案解读(php封装库)
  • 项目管理在企业中的作用
  • Python 多线程日志错乱:logging.Handler 的并发问题
  • 什么是IO多路复用
  • ESPTimer vs GPTimer:ESP32 定时器系统深度解析
  • 【Java基础知识 19】继承
  • Spring注解演进与自动装配原理深度解析:从历史发展到自定义Starter实践
  • 197-200CSS3响应式布局,BFC
  • 内存管理(智能指针,内存对齐,野指针,悬空指针)
  • 时间轴组件开发:实现灵活的时间范围选择
  • PHP单独使用phinx使用数据库迁移
  • Spring Cloud微服务架构设计与实战:从组件落地到分布式事务解决
  • 精简版UDP网络编程:Socket套接字应用
  • 链表有环找入口节点原理
  • css绘制三角形
  • A股大盘数据-20250829 分析
  • C++基础(③反转字符串(字符串 + 双指针))
  • 阿里巴巴拍立淘API返回值解析与商品信息优化指南
  • 刷题日记0829
  • Libvio 访问异常排查指南
  • OpenEuler部署LoganaLyzer
  • linux实时性研究
  • Python 编码与加密全解析:从字符编码到 RSA 签名验证
  • Win11 压缩实测:Win11 的压缩软件的最佳配置和使用方式
  • 龙迅#LT7621GX适用于两路HDMI2.1/DP1.4A转HDMI2.1混切应用,分辨率高达8K60HZ!
  • Anaconda安装与conda使用详细版
  • Linux系统编程—进程概念
  • 文本嵌入模型的本质
  • 进程与线程的根本区别