关于动态规划【0-1背包思想在实际问题中是怎么转化的?】

目录

一、两道例题

二、转化的共同点


一、两道例题

例1、力扣416.分割等和子集

例2、力扣1049.最后一块石头的重量II

二、转化的共同点

1、递推公式

纯粹的0-1背包问题的递推公式是:

dpj = max(dpj,dpj-weight\[i]+valuei); // max里面放的是"取"或"不取"当前物品i,这两种情况;

【这两个实际0-1背包问题的应用,都有一个共同点就是:它们的数组里的值就是物品的重量和价值】

所以转化以后的递推公式是:

dpj = max(dpj,dpj-nums\[i]+numsi);

【0-1背包问题要解决的就是【背包最大能装的重量、每个物品的重量、每个物品的价值】

问:背包最多能装多少价值

所以,第二个共同点是定义背包最大能装的重量。】

2、背包最大能装质量

纯粹的0-1背包问题的最大能装重量已知

(由题目就能判断出)

转化为实际0-1背包问题的应用时,要先分析后定义

(例1、力扣416.分割等和子集。定义背包最大能装的重量为:数组全部数值总和的一半sum/2)

(例2、力扣1049.最后一块石头的重量II。定义背包最大能装的重量为:数组全部数值总和的一半 sum/2 )(这里 sum/2 是向下取整)

相关推荐
阿文的代码库1 小时前
欧拉回路与欧拉路径的算法流程演示
算法
汤姆yu1 小时前
云知声 U2 原生智能体大模型深度解析
大数据·人工智能·算法·ai·大模型·多模态·智能体
syt_biancheng1 小时前
贪心算法(1)---简介
算法·贪心算法
小白小宋2 小时前
【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现
算法·5g·matlab·信息与通信·信号处理
满怀冰雪2 小时前
第15篇-链表基础-反转链表-合并链表与快慢指针
java·算法·链表
2zcode2 小时前
基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别·变声算法
满怀冰雪2 小时前
第14篇-队列与单调队列-解决窗口最值问题的关键结构
java·算法
QiLinkOS2 小时前
极客精神与商业思维的融合实践(3)
c语言·c++·人工智能·算法·开源协议
bIo7lyA8v2 小时前
算法设计中的代价函数优化与约束求解的技术8
算法