这是一个裸的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];
}