贪心算法Q2——零钱兑换
问题描述
假设有25分、10分、5分、1分的硬币,
先要发给客户41分的零钱,如何办到硬币个数最少?
package 贪心;
import java.util.Arrays;
public class 零钱兑换 {
static void moneyChange(Integer[] a,int money) {
Arrays.sort(a,(Integer a1,Integer a2)->{return a2-a1;});
int i=0;
while(i<a.length) {
if(money<a[i]) {
i++;
continue;
}
money-=a[i];
System.out.println(a[i]);
}
}
static void moneyChange2(Integer[] a,int money) {
Arrays.sort(a);
int count=0;
for(int i=a.length-1;i>=0;i--) {
if(money<a[i]) {
continue;
}
money-=a[i];
System.out.println(a[i]);
count++;
i=a.length;
}
System.out.println(count);
}
public static void main(String[] args) {
Integer[] faces= {5,10,25,1};
int money=41;
moneyChange2(faces,money);
}
}