题目传送门
解题思路:
补一个完全背包的模板,跟01背包十分相似,唯一不同在于重量j的枚举顺序.
AC代码:
1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int m,n,v[10004],w[10004],f[10004]; 7 8 int main() 9 { 10 scanf("%d%d",&m,&n); 11 for(int i = 1;i <= n; i++) 12 scanf("%d%d",&w[i],&v[i]); 13 for(int i = 1;i <= n; i++) 14 for(int j = 0;j <= m; j++) 15 if(v[i] <= j) 16 f[j] = max(f[j],f[j-v[i]] + w[i]); 17 printf("%d",f[m]); 18 return 0; 19 }