动态规划6:01背包问题

博客探讨了如何使用动态规划解决01背包问题。在不超过背包承重的情况下,选择物品以最大化总价值。通过创建二维数组并计算不同状态下的最大价值,最终得出最优解。动态规划的四步曲包括初始化数组、计算基础值、遍历计算和得到结果。
摘要由CSDN通过智能技术生成

题目:一个背包有一定的承重cap,有N件物品,每件都有自己的价值,记录在数组v中,也都有自己的重量,记录在数组w中,每件物品只能选择要装入背包还是不装入背包,要求在不超过背包承重的前提下,选出物品的总价值最大。给定物品的重量w价值v及物品数n和承重cap。请返回最大总价值。

测试样例:[1,2,3],[1,2,3],3,6返回:6

思路:01背包问题,一个典型的动态规划问题,题目意思很简单,N件物品,每一件有自己的重量和自己的价值,分别用一个数组给出,背包有一个限制总重量为cap,要求在满足重量不超过cap的前提下,向背包中装入物品,使得总的价值最大,求出最大价值,不需要知道最大价值的方案。

由于每件物品有且仅有放或者不放这2个选项,即0或者1,因此可通过暴力遍历的方式来解决,但是显然时间复杂度爆表,这种复杂的实际问题通常就是使用动态规划来解决。

将问题拆解为求一系列dp[i][j],即使用前i个物品,在重量不超过j时的最大价值为dp[i][j],注意,对于物品i显然取值范围为0~n-1表示使用物品数组中下标为0~n-1物品;对于重量,由于只

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值