先介绍贪心:
题目:
import java.util.Scanner;
public class 硬币支付 {
static int[] cnts=new int[6];
static int[] coins= {1,5,10,50,100,500};
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
for (int i = 0; i < 6; i++) {
cnts[i]=sc.nextInt();
}
int A=sc.nextInt();
int res=f(A,5);//先从面值大的硬币开始
System.out.println(res);
}
private static int f(int A, int cur) {
if(A<=0) return 0;
if(cur==0) return A;
int coinVa=coins[cur];
int x=A/coinVa;//看有多少个coinVa面值的硬币
int cnt=cnts[cur];//当前面值的硬币有cnt个
int t=Math.min(x,cnt);
return t+f(A-t*coinVa,cur-1);//用t个当前面值,剩下的继续处理。
}
}