例如某国家货币1元,5元,和11元,你给对面15元怎么给最少的货币数
从给0元开始思考,0元一定是对应0张,
1元:最优解是1张1元的货币
2元:没有两元的货币,但是有1元的货币,1元的最优解是1张,除去这1张还有1元也对应1张,因此最优解为2张
3元同理
4元同理
5元,有5元的货币,所以5元最优解为1张
6元:包括1元,看一下1元最优解加1张,和5元最优解加一张那个更好
依次类推:
import java.util.*;
public class Main {
private static int Check(int[] money,int pay){
int[] a = new int[pay+1];
//a[0] = 0;
for (int i = 1; i <= pay; i++) {
int cost = Integer.MAX_VALUE;
if(i>=1) cost = Math.min(cost,a[i-1]+1);
if(i>=5) cost = Math.min(cost,a[i-5]+5);
if(i>=11) cost = Math.min(cost,a[i-11]+11);
a[i] = cost;
}
return a[pay];
}
public static void main(String[] args) {
int[] money = {1,5,11};
int pay = 15;
System.out.println(Check(money,pay));
}
}