class Solution { vector<int>count; int dp(vector<int>& coins, int rem) { if (rem < 0) return -1; if (rem == 0) return 0; if (count[rem - 1] != 0) return count[rem - 1]; int Min = INT_MAX; for (int coin:coins) { int res = dp(coins, rem - coin); if (res >= 0 && res < Min) { Min = res + 1; } } count[rem - 1] = Min == INT_MAX ? -1 : Min; return count[rem - 1]; }public: int coinChange(vector<int>& coins, int amount) { if (amount < 1) return 0; count.resize(amount); return dp(coins, amount); }};
class Solution {public: int coinChange(vector<int>& coins, int amount) { int Max = amount + 1; vector<int> dp(amount + 1, Max); dp[0] = 0; for (int i = 1; i <= amount; ++i) { for (int j = 0; j < (int)coins.size(); ++j) { if (coins[j] <= i) { dp[i] = min(dp[i], dp[i - coins[j]] + 1); } } } return dp[amount] > amount ? -1 : dp[amount]; }};作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/coin-change/solution/322-ling-qian-dui-huan-by-leetcode-solution/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。