求各位大佬看看
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
const int Max=45000+1,INF=0x7fffffff;
int sum,n;
int g[501],num[Max];
int dp(int x,int l){
int r=INF;
if(x<0){
return r;
}
if(l==0){
return x;
}
num[x]=min(dp(x-g[l],l-1),dp(x,l-1));
return num[x];
}
int main(){
memset(g,0,sizeof(g));
memset(num,0,sizeof(num));
cin>>sum>>n;
for(int i=1;i<=n;i++){
cin>>g[i];
}
cout<<sum-dp(sum,n);
}