问题描述:
有1元,5元,10元,50元,100元,500元的硬币各c1,c5,c10,c50,c100,c500枚.
现在要用这些硬币来支付A元,最少需要多少枚硬币?
假定本题至少存在一种支付方案.
0≤ci≤10^9
0≤A≤10^9
输入:
第一行有六个数字,分别代表从小到大6种面值的硬币的个数
第二行为A,代表需支付的A元
样例:
输入:
3 2 1 3 0 2
620
输出:
6
import java.util.Scanner;
public class 硬币支付问题 {
public static int [] coins = {1,5,10,50,100,500};
public static int [] numbers=new int[6];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
for (int i = 0; i <6; i++) {
numbers[i]=sc.nextInt();
}
System.out.println(f(money, 5));
}
public static int f(int money,int cur ){
if (money<=0) {
return 0;
}
if (cur==0) {
return money;
}
int conisvalue = coins[cur];
int conisnumber = money/conisvalue;
int num = Math.min(conisnumber, numbers[cur]);
return num+f(money-num*conisvalue, cur-1);
}
}
总金额:620
面值对应的个数:3 2 1 3 0 2
需要的最少硬币数:6