完全背包
2026-08-29 12:01:19
发布于:上海
完全背包,与01背包唯一1区别是---每种物品无限件,可以拿任意多个。
二维
01
for(int i=1;i<=m;i++){
int w,v;
cin>>w>>v;
for(int j=0;j<=t;j++){
if(j>=w)f[i][j]=max(f[i-1][j-w]+v,f[i-1][j]);
else f[i][j]=f[i-1][j];
}
}
完全
for(int i=1;i<=m;i++){
int w,v;
cin>>w>>v;
for(int j=0;j<=t;j++){
if(j>=w)f[i][j]=max(f[i][j-w]+v,f[i-1][j]);
else f[i][j]=f[i-1][j];
}
}
滚动
01
for(int i=1;i<=m;i++){
int w,v;
cin>>w>>v;
for(int j=t;j>=0;j--){
if(j>=w)d[j]=max(d[j-w]+v,d[j]);
}
}
cout<<d[t];
完全
for(int i=1;i<=m;i++){
int w,v;
cin>>w>>v;
for(int j=0;j<=t;j++){
if(j>=w)d[j]=max(d[j-w]+v,d[j]);
}
}
cout<<d[t];
这里空空如也












有帮助,赞一个