背包笔记

01背包

朴素版01背包

cpp 复制代码
cin >> n >> m;
f[0][0] = 0;
for(int i = 1; i <= n; i ++)
{
	for(int j = 0; j <= m; j ++)
	{
		f[i][j] = f[i - 1][j];//第i个物品不选
		if(j - v[i] >= 0)
		{
			f[i][j] = max(f[i][j], f[i - 1][j - v[i]] + w[i]);//选第i个物品
		}
	}
}

cout << f[n][m];

一维

复制代码
cin >> n >> m;
for(int i = 1; i <= n; i ++)cin >> v[i] >> w[i];
//初始化
//一维的要f[0~m]都是0
//如果要恰好背包容量是m的话,要f[0] = 0, f[1~m] = 负无穷
for(int i = 1; i <= n; i ++)
{
	for(int j = m; j >= v[i]; j --)
	{
		f[j] = max(f[j], f[j - v[i]] + w[i]);
	}
}

cout << f[m];
相关推荐
Ayanami_Reii几秒前
进阶数据结构应用-线段树扫描线
数据结构·算法·线段树·树状数组·离散化·fenwick tree·线段树扫描线
leoufung1 分钟前
LeetCode 98 Validate Binary Search Tree 深度解析
算法·leetcode·职场和发展
水木姚姚3 分钟前
C++ begin
开发语言·c++·算法
浅川.255 分钟前
xtuoj 素数个数
数据结构·算法
jyyyx的算法博客19 分钟前
LeetCode 面试题 16.18. 模式匹配
算法·leetcode
uuuuuuu29 分钟前
数组中的排序问题
算法
Stream33 分钟前
加密与签名技术之密钥派生与密码学随机数
后端·算法
Stream34 分钟前
加密与签名技术之哈希算法
后端·算法
老王熬夜敲代码1 小时前
泛型编程的差异抽象思想
开发语言·c++·笔记
少许极端1 小时前
算法奇妙屋(十五)-BFS解决边权为1的最短路径问题
数据结构·算法·bfs·宽度优先·队列·图解算法·边权为1的最短路径问题