一、问题描述
You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination
of the coins, return -1.
Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)
Example 2:
coins = [2], amount = 3
return -1.
Note:
You may assume that you have an infinite number of each kind of coin.
二、思路
采用动态规划思想。
三、代码
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int> v(amount + 1,amount + 1);
v[0] = 0;
for(int i = 1; i <= amount; i++){
for(int j = 0; j < coins.size(); j++){
if(coins[j] <= i){
v[i] = min(v[i] , v[i - coins[j]] + 1);
}
}
}
return v[amount] > amount ? -1 : v[amount];
}
};
本文介绍了一种使用动态规划解决硬币找零问题的方法。该方法可以计算出组成特定金额所需的最少硬币数量,适用于拥有无限数量每种面额的情况。
547

被折叠的 条评论
为什么被折叠?



