题目链接: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;
}