我的程序的任务是计算获得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];
}
这是我的基本想法,但我确实注意到,即使存在涉及该硬币的组合,硬币股在达到组合的最后一个指数之前就“耗尽”。