算法练习

您所在的位置:网站首页 一个背包可以背几年 算法练习

算法练习

2024-06-17 17:02| 来源: 网络整理| 查看: 265

难度参考

        难度:困难

        分类:动态规划

        难度与分类由我所参与的培训课程提供,但需 要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨在督促自己认真学习。

题目

        动态规划经典问题01背包?

        具体内容:

        背包最大重量为4

        物品如下:

重量价值物品0115物品1320物品2430

        问背包能背的最大重量是多少?

思路

        0-1 背包问题的动态规划解法基于以下思路:

子问题定义:

将原问题分解为子问题。在这里,我们考虑"对于给定的背包容量和一组物品,最大价值是多少?"定义状态 dp[i][w] —— 表示考虑前 i 个物品时,对于不超过 w 重量的背包,所能得到的最大价值。

初始条件:

对于 dp[0][...],即一个物品也不考虑的情况,背包的价值总是 0。对于 dp[...][0],即背包容量为 0 的情况,背包的价值也总是 0。

递推关系(状态转移方程):

对于每一个物品 i 和每一个可能的重量 w,我们需要做出一个决策:是否将物品 i 放入背包。如果不放物品 i,则 dp[i][w] = dp[i-1][w] —— 也就是说,当前的最大价值与前 i-1 个物品时的最大价值相同。如果放物品 i,我们必须确保当前背包的剩余容量至少是物品 i 的重量 (weights[i-1]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3