背包笔记

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];
相关推荐
看见繁华5 分钟前
C++ 高级
开发语言·c++
点云SLAM13 分钟前
constexpr 和 explicit 在 C++ 中被提出的动机
开发语言·c++·explicit关键字·隐式转换·constexpr关键字·c++11/17/20
sin_hielo14 分钟前
leetcode 3606
数据结构·算法·leetcode
冷崖16 分钟前
工厂模式-创建型
c++·设计模式
qq_3106585126 分钟前
mediasoup源码走读(六)——NetEQ
服务器·c++·音视频
Xの哲學1 小时前
Linux DRM 架构深度解析
linux·服务器·算法·架构·边缘计算
qq_433554541 小时前
C++树形DP(树上分组背包)
c++·算法·深度优先
电子_咸鱼2 小时前
常见面试题——滑动窗口算法
c++·后端·python·算法·leetcode·哈希算法·推荐算法
mit6.8242 小时前
hash+presum判等|幻方0
算法
萌>__<新2 小时前
力扣打卡每日一题————最小覆盖子串
数据结构·算法·leetcode·滑动窗口·哈希表