package dongtaiguihua;
//如果有面值是1,3,5块的硬币,怎样用最少的硬币凑成11块
public class YingBi {
//分析:
//凑够0元,需要d(0) = 0个硬币 0
//凑够1元,需要d(1)=d(0)+1个 1元硬币 1
//凑够2元,需要d(2) = d(1)+1个 1元硬币 2
//凑够3元,需要d(3) = d(2)+1个1元硬币 /d(3) = d(0)+1个3元硬币 1
//....
//d(i) = d(i-Vj)+1
public static void main(String[] args) {
int[] d = new int[12];
int[] charges = {1,3,5};
d[0] = 0;
for(int i = 1 ; i < 12; i++){
int vj = 1;
for(int j = 0; j < charges.length;j++){
if(i>=charges[j] && vj<=charges[j]){
vj = charges[j];
}
}
System.out.println("i:"+i+"----i-vj:"+(i-vj));
d[i] = d[i-vj]+1;
}
for(int i = 0; i < 12; i++){
System.out.println(d[i]);
}
}
}
遍历数组可以得出最少用几个硬币
下次有空补充一下如何算出需要的硬币。