题目描述
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。
代码
public class ChangingCoin {
public int changeCoin(int[] coins, int amount) {
if(coins == null || coins.length == 0 || amount <= 0)
return 0;
int [] minNumber = new int[amount + 1];
for(int i = 1; i <= amount; i++)
{
minNumber[i] = amount + 1;
for(int coin : coins)
{
if(i >= coin && minNumber[i - coin] + 1 < minNumber[i])
minNumber[i] = minNumber[i - coin] + 1;
}
}
if(minNumber[amount] == amount + 1)
return -1;
else
return minNumber[amount];
}
}