#include<stdio.h>
#include<stdlib.h>
int w[10001],c[10001],s[10001],f[100001];
int n,m,i,v,k;
int main(){
//printf("输入背包容量:");
scanf("%d",&m);
//printf("输入物品数量:");
scanf("%d",&n);
for (i=1;i<=n;i++){
//printf("输入第%d个物品的重量及价值与数量:",i);
scanf("%d%d%d",&w[i],&c[i],&s[i]);
}
for (i=1;i<=n;i++)
for (v=m;v>=0;v--)
for (k=0;k<=s[i];k++){ //枚举放0~s[i]个
if (v-k*w[i]<0) break;
if (f[v-k*w[i]]+k*c[i]>f[v])
f[v]=f[v-k*w[i]]+k*c[i]; //贪心
}
//printf("最大价值为:");
printf("%d\n",f[m]);
system("pause>nul");
return 0;
}
多重背包模板
最新推荐文章于 2024-04-28 17:45:41 发布