Gongt


私信TA

用户名:Gongt

访问量:457

签 名:

又复活

等  级
排  名 18045
经  验 710
参赛次数 0
文章发表 4
年  龄 15
在职情况 学生
学  校 福州高新区良存华侨学校
专  业

  自我简介:

再见,我的C++


解题思路:把“完全背包问题”转化成“01背包问题”来做。看似有无限多的物品,但背包只有那么大。


注意事项:和上一题稍有不同,输出记得加“max=”。

参考代码:由“01背包问题”的代码更改而来,第9行是增加的,其他一样。

#include<iostream>
int main(){
	using namespace std;
	int m,n; cin>>m>>n;
	int w,c,s[m+1]={0};
	while(n>0){
		n--;
		cin>>w>>c;
		for(int i=m/w;i>0;i--) 
			for(int j=m+1;j>=w;j--)
				s[j]=max(s[j],c+s[j-w]);
	}
	cout<<"max="<<s[m];
	return 0;
}


 

0.0分

3 人评分

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

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

代码解释器

代码纠错

SQL生成与解释

  评论区