杨梓浩


私信TA

用户名:dotcpp0789850

访问量:103

签 名:

吹牛大王

等  级
排  名 1076
经  验 3238
参赛次数 1
文章发表 10
年  龄 0
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:        在01背包的基础上再套多一层循环以表示该物品的个数

注意事项:

参考代码:

#include<stdio.h>
#define max(x,y) ((x)>(y)?(x):(y))
int main(){
	int i,j,k,n,m;
	int c[1001]={0},w[1001]={0},v[1001]={0},dp[4001]={0};
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++){
		scanf("%d%d%d",&w[i],&v[i],&c[i]);
	}
	for(i=1;i<=n;i++){
		for(k=1;k<=c[i];k++){
			for(j=m;j>=w[i];j--){
				dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
			}
		}
	}
	printf("%d\n",dp[m]);
	return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »