话不多说,直接上代码
#include <bits/stdc++.h>
using namespace std;
int w[35],c[35],m,n;
int dfs(int p, int x, int v)
{
if(p<=0||x>n) return v;
if(p>=w[x])
return max(dfs(p-w[x],x+1,v+c[x]),dfs(p,x+1,v));
else
return dfs(p,x+1,v);
}
int main()
{
cin >> m >> n;
for(int i=1;i<=n;i++)
cin >>w[i] >> c[i];
cout << dfs(m,1,0);
return 0;
}