有面值分别为1,3,5的三种硬币若干,凑成n元最少需要多少硬币?
/**
* 有面值分别为1,3,5的三种硬币若干,凑成n元最少需要多少硬币?
*/
public class Coins {
public static void main(String[] args) {
int[] coins = {1, 3, 5};
System.out.println(minCoinNum(coins, 10));
}
private static int minCoinNum(int[] coins, int n) {
//组成n元最小需要的金币数
//coins={1,3,5}
int[] coinMinNum = new int[n + 1];//下标代表n元,int[n]代表组成n元要用的最少金比数
for (int t = 0; t < coinMinNum.length; t++) {
coinMinNum[t] = Integer.MAX_VALUE;
}
coinMinNum[0] = 0;
for (int i = 1; i < n + 1; i++) {
//找出(i-vj)中最小的
int minTem = coinMinNum[i];
for (int coin : coins) {
if (i - coin >= 0 && coinMinNum[i - coin] + 1 < minTem) {
minTem = coinMinNum[i - coin] + 1;
}
}
coinMinNum[i] = minTem;
}
return coinMinNum[n];
}
}
版权声明:本文为Winmusic原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。