题目:
n件物品,背包空间为m,每一件物品的体积是vi,价值是wi,求背包放物品最大价值
题解:
题目类型:一维费用之至多限制最大值
初始值:都为0
更新时 v>=0
01背包从后往前更新。
代码:
#include<bits/stdc++.h>
using namespace std;
int dp[1005],wi[1005],vi[1005];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>vi[i]>>wi[i];
}
for(int i=1;i<=n;i++){
for(int j=m;j>=vi[i];j--){
dp[j]=max(dp[j],dp[j-vi[i]]+wi[i]);
}
}
cout<<dp[m];
return 0;
}