Algorithm 有限硬币的换币算法?
我的程序的任务是计算所有可能获得T值的组合,以及一系列具有不同(和一些相同)值且数量有限的硬币 两种不同名称的硬币可能具有相同的价值,例如,“黄金”和“黄玉”硬币都具有3的价值Algorithm 有限硬币的换币算法?,algorithm,sum,combinations,coin-change,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: coinStoc
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];
}
公共静态int更改(int目标,数组列表coinStocks){
int[]combi=新int[目标+1];
combi[0]=1;
用于(GemCoin g:硬币库存){
对于(int i=1;i=g.getValue()&&g.getStocks()>0){///if
combi[i]+=combi[i-d.getChips()];
}
}
}
for(int-im:combi){
系统输出打印项次(im);
}
返回组合[目标];
}
这是我的一般想法,但我注意到,硬币库存在到达combi的最后一个指数之前“用完”,即使存在涉及该硬币的组合。您说您的函数应该返回一个组合列表,但它返回一个整数。请您提供一些示例输入和所需输出。对不起,“多少”组合例如,黄玉(T)币为1美元,红宝石(R)币为1美元,蓝宝石(S)币为2美元,黄金(G)币为3美元。有4颗黄玉、1颗红宝石、1颗蓝宝石和1颗黄金。目标是4美元。为了实现这一点,您可以使用4T/3T1R/2T1S/1G,意思是4作为输出返回。您可以发布GemCoin类的代码吗?有6种组合:4T、3T1R、2T1S、1T11S、1T1G、1R1G。