package leetcode;
import java.util.Arrays;
public class demo_322 {
public int coinChange(int[] coins, int amount) {
//目标为0,则对短长度为0
if(amount==0) {return 0;}
int[] dp=new int[amount+1];
//数组中的全部值都为amount+1
Arrays.fill(dp, amount+1);
dp[0]=0;
for(int i=1;i<=amount;i++) {
//dp[i]=min{dp[i-coins[0]],dp[i-coins[1]]......dp[i-coins[n]]}+1
for(int j=0;j<coins.length;j++) {
if(i>=coins[j]) {
dp[i]=Math.min(dp[i], dp[i-coins[j]]+1);
}
}
}
//找不到子数组满足要求
if(dp[amount]==amount+1) {return -1;}
return dp[amount];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_322 demo_322=new demo_322();
int[] coins= {1,2,5};
System.out.println( demo_322.coinChange(coins, 11));
}
}