题意:每个物品有价格和重要度,求不超过给定金钱的情况下选的物品重要度和价格乘积最大
思路:每个物品分为选或者不选,求出两者之间乘积最大值即可
#include<algorithm>
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<map>
using namespace std;
int n, m, cost[30], val[30], dp[30005];
int main()
{
while (cin >> n >> m) {
memset(dp, 0, sizeof(dp));
for (int i = 0; i < m; i++)
cin >> cost[i] >> val[i];
for (int i = 0; i < m; i++) {
for (int j = n; j >= cost[i]; j--) {
dp[j] = max(dp[j], dp[j-cost[i]]+cost[i]*val[i]);
}
}
cout << dp[n-1] << endl;
}
return 0;
}