892611452 2010-07-19 07:10:00
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
int b,c,v[22],a[2][35001],i,j;
int main()
{ cin>>c>>b; for(i=1;i<=b;i++)cin>>v[i];
for(i=0;i<=max(v[b]-1,c);i++)a[c%2][j]=0;
for(i=v[b];i<=c;i++)a[c%2][j]=v[b];
for(i=b-1;i>1;i--){
for(j=0;j<=max(v[i]-1,c);j++)a[i%2][j]=a[(i+1)%2][j];
for(j=v[i];j<=c;j++)a[i%2][j]=max(a[(i+1)%2][j],a[(i+1)%2][j-v[i]]+v[i]);}
a[1][c]=max(a[0][c],a[0][c-v[1]]+v[1]);
cout<<a[1][c];
return 0;}