#include <iostream>
#include <vector>
#include <climits>
using namespace std;
int coinCollect(vector<int>& coins, int target) {
vector<int> dp(target + 1, INT_MIN);
dp[0] = 0;
for (int i = 1; i <= target; i++) {
for (int coin : coins) {
if (i >= coin && dp[i - coin] != INT_MIN) {
dp[i] = max(dp[i], dp[i - coin] + 1);
}
}
}
for (int i = target; i >= 0; i--) {
if (dp[i] != INT_MIN) {
return dp[i];
}
}
return 0;
}
int main() {
vector<int> coins = {1, 2, 5, 10, 20, 30};
int target = 50;
int result = coinCollect(coins, target);
cout << "最大总价值为: " << result << endl;
return 0;
}