编辑代码

#include <iostream>
#include <vector>
#include <climits>

using namespace std;

int minCoins(vector<int>& coins, int amount) {
    vector<int> dp(amount + 1, INT_MAX);
    dp[0] = 0;

    for (int i = 1; i <= amount; ++i) {
        for (int j = 0; j < coins.size(); ++j) {
            int coin = coins[j];
            if (i - coin >= 0 && dp[i - coin] != INT_MAX) {
                dp[i] = min(dp[i], dp[i - coin] + 1);
            }
        }
    }

    return dp[amount] == INT_MAX ? -1 : dp[amount];
}

int main() {
    int coinArr[] = {1, 2, 5};
    vector<int> coins(coinArr, coinArr + sizeof(coinArr) / sizeof(coinArr[0]));
    
    int amount = 11;

    int result = minCoins(coins, amount);

    if (result != -1) {
        cout << "The minimum number of coins needed to make up " << amount << " is: " << result << endl;
    } else {
        cout << "It's not possible to make up the amount using the given coins." << endl;
    }

    return 0;
}