题目:完全背包问题
思路:模板+滚动数组…
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxm 200
#define maxn 30
int m,n;
int w[maxn+5],c[maxn+5];
int f[maxm+5]= {0};
int main() {
scanf("%d%d",&m,&n);
for(int i=1; i<=n; i++) {
scanf("%d%d",&w[i],&c[i]);
for(int j=m; j>=0; j--) {
for(int k=1; j-k*w[i]>=0; k++) {
f[j]=max(f[j],f[j-k*w[i]]+k*c[i]);
}
}
}
printf("max=%d\n",f[m]);
return 0;
}