题目链接:​​Bessie的体重问题​

题意很简单,给你h和n,分别代表可以的最大数量和可以选择的n个数,问你在最大数量范围里能得到的最大数量,直接套01背包模板就可以了,代码如下:

#include <bits/stdc++.h>

using namespace std;

int h,n,a[1005],dp[45005];

int main(){
while(cin>>h>>n){
memset(dp,0,sizeof(dp));
for(int i = 1;i <= n;i++)
cin>>a[i];
for(int i = 1;i <= n;i++)
for(int j = h;j >= a[i];j--)
dp[j] = max(dp[j],dp[j-a[i]]+a[i]);
cout<<dp[h]<<endl;
}
return 0;
}