例题:硬币支付问题
题解:
import java.util.Scanner;
public class Practice_硬币支付问题 {
static int[] cnt = new int[6];
static int[] coins = {1, 5, 10, 50, 100, 500};
public static void main(String[] args) {
/*
输入测试样例:
3 2 1 3 0 2
620
*/
Scanner in = new Scanner(System.in);
for (int i = 0; i < 6; i++) {
cnt[i] = in.nextInt();
}
int A = in.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 coinsValue = coins[cur];
int x = A / coinsValue;
int t = Math.min(x, cnt[cur]);
return t + f(A - t * coinsValue, cur - 1);
}
}