练习地址:3. 完全背包问题 - AcWing题库
思路:01背包的逆序循环
c++实现:
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
int v[N],w[N];
int f[N];
int main(){
int m,n;
cin>>m>>n;
for(int i=1;i<=m;i++){
cin>>v[i]>>w[i];
}
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
if(v[i]<=j)
f[j]=max(f[j-v[i]]+w[i],f[j]);
cout<<f[n];
}