
求解代码
java
public int minMoney (int[] arr, int aim) {
int[] dp = new int[aim+1];
Arrays.fill(dp, Integer.MAX_VALUE);
dp[0]=0;
for(int i=0;i<arr.length;i++){
for(int j=arr[i];j<=aim;j++){
if(dp[j-arr[i]]!=Integer.MAX_VALUE){
dp[j]=Math.min(dp[j-arr[i]]+1,dp[j]);
}
}
}
return dp[aim]==Integer.MAX_VALUE?-1:dp[aim];
}
小贴士
dp[j] 表示的是凑出金额j所需的最少硬币数