dp硬币问题
这里的F(X)和f(x)代表取价值为x的硬币
比如F(15) :如果取1元的硬币就是1个1元硬币+价值为14的f(14)的硬币,如果是取5元的硬币就是1个5元硬币+价值为10的f(10)的硬币
如果取11元的硬币就是1个11元硬币+价值为4的f(4)的硬币
比如f(15)=1+f(14)你用关心f(14)怎么来的,因为上一次已经计算过了,只关心它的结果。
package com.itheima.Test;
public class _凑硬币 {
public static void main(String[] args) {
int[] dp = new int[100];
int cost;//凑硬币的个数
for(int i=1;i<=15;i++){
cost=99999;
if(i-1>=0) cost= min(cost,dp[i-1]+1);
if(i-5>=0) cost=min(cost,dp[i-5]+1);
if(i-11>=0) cost=min(cost,dp[i-11]+1);
dp[i]=cost;
System.out.println(i+" "+dp[i]);
}
}
private static int min(int a, int b) {
return a<b?a:b;
}
}