Алгоритм изменения монет для ограниченной монеты? - PullRequest
0 голосов
/ 27 сентября 2019

Моей программе поручено подсчитать все возможные комбинации получения значения T со списком монет с различными (и некоторыми идентичными) значениями с ограниченным количеством монет.

Две монеты с разными именами могутимеют одинаковое значение, например монеты "Gold" и "Topaz" имеют значение 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];
}

Это моя общая идея, но я заметил, что запасы монет "закончились" раньшедостижение последнего индекса в комбинации, хотя существует комбинация с этой монетой.

...