Forrest


私信TA

用户名:dotcpp0717441

访问量:1195

签 名:

等  级
排  名 219
经  验 6126
参赛次数 1
文章发表 59
年  龄 0
在职情况 教师
学  校 优学乐程
专  业

  自我简介:

解题思路:转化为完全背包, 当数量不限时,数量为背包容量除以物品体积

注意事项:滚动数组优化, j 从m 到 w[i]


参考代码:

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 2e2 + 10;
int f[N],w[N],c[N],p[N];
int main()
{
	int n, m;
	cin >> m >> n;
	for(int i = 1; i <= n; i ++){
		cin >> w[i] >> c[i] >> p[i];
		if (!p[i]) p[i] = m / w[i];
	}
		
	for(int i = 1; i <= n; i ++)
		for(int j = m; j >= w[i]; j --)
			for(int k = 0; k <= p[i]; k ++)
				if(j >= k * w[i])
					f[j] = max(f[j],f[j - k * w[i]] + k * c[i]);

	cout <<f[m];
	return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区