有限硬币的找零算法?

时间:2019-09-27 09:43:01

标签: algorithm sum combinations coin-change

我的程序的任务是计算获得T值的所有可能组合,并列出一系列硬币数量有限(但有些相同)的硬币。

两个名称不同的硬币可能具有相同的值,例如“金”和“黄玉”两个硬币的值均为3。

public static int change(int target, ArrayList<GemCoin> coinStocks) {
    int[] combi = new int[target + 1];
    combi[0] = 1;
    for (GemCoin g: coinStocks) {
        for (int i = 1; i < combi.length; i++) {
            if (i >= g.getValue() && g.getStocks() > 0) {  ///if
                combi[i] += combi[i - d.getChips()];
            }
        }
    }
    for(int im : combi){
        System.out.println(im);
    }
    return combi[target];
}

这是我的基本想法,但我确实注意到,即使存在涉及该硬币的组合,硬币股在达到组合的最后一个指数之前就“耗尽”。

0 个答案:

没有答案