这是一个裸的01背包,因为题目中没说可以采好多次,不多说上代码,
#include<iostream> using namespace std; int main() { int n,m,v,i; int c[10000],w[10000],f[10000]; cin>>m>>n; for( i=1;i<=n;i++) cin>>w[i]>>c[i]; for( i=1;i<=n;i++) for( v=m;v>=w[i];v--) if(f[v-w[i]]+c[i]>f[v]) f[v]=f[v-w[i]]+c[i]; cout<<f[m]; }