IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 01背包(动态规划) -> 正文阅读

[数据结构与算法]01背包(动态规划)

?01背包_牛客题霸_牛客网 (nowcoder.com)

最近不是学习了动态规划吗,来回顾一下之前不是特别理解的01背包问题?

老规矩,动态规划三步走入门动态规划之三步走

  • 第一步定义dp数组含义,我们这里根据题意选择定义二维数组dp[i][j]为只有前i个物品在容量为??j?的背包下我们能获得的最大重量(或者说对于dp[ i ][ j ]来说,i指的是前i件物品,j指的是还剩多少的背包空间)
  • 第二步寻找数组元素之间的关系式

对于我们面对一件物品来说,我们有两种选择,要么把它拿到背包里,要么不把它放到背包里(这是建立在它的体积可以小于背包所剩体积的前提下),由于我们需要最大的重量,所以我们自然需要在这两种选择之间选择质量更大的,当然有可能背包根本放不下这个物品

  • 第三步即初始化数组dp,由于背包在没有放东西的时候质量为0,所以dp数组初始化为0即可?

代码转换如下:

class Solution {
public:
    int vw[1005][2];
    int dp[1005][1005] = { 0 };//定义dp[i][j]为只有前i个物品在j的背包体积下我们能获得的最大重量
    int knapsack(int V, int n, vector<vector<int> >& vw) {
	   for (int i = 1; i <= n; i++)//前i个物品 
	   {
		for (int j = 1; j <= V; j++)//背包体积 
		{
            if(j<vw[i-1][0])//背包放不下
            {
                dp[i][j]=dp[i-1][j];//状态不变
            }
            else
            {
				dp[i][j] = max(dp[i - 1][j - vw[i-1][0]] + vw[i-1][1], dp[i - 1][j]);           
            }拿或者不拿
		}
       }
	   return dp[n][V];
    }
};

?这里推荐另外一道相似的题目,感兴趣的同学可以看看采药 (动态规划)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:27:37  更:2022-04-06 23:28:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:00:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码