==========================努力奋斗财源广进==========================
给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 如果无解,请返回-1.
import java.util.*;
public class Solution {
/**
* 最少货币数
* @param arr int整型一维数组 the array
* @param aim int整型 the target
* @return int整型
*/
public int minMoney (int[] arr, int aim) {
// write code here
if(aim < 1) return 0;
int[] dp = new int[aim+1];
Arrays.fill(dp, aim+1);
dp[0] = 0;
for(int i = 1; i <= aim; i++)
{
for(int j = 0; j < arr.length; j++)
{
if(arr[j] <= i)
{
dp[i] = Math.min(dp[i], dp[i-arr[j]] + 1);
}
}
}
return dp[aim] > aim ? -1 : dp[aim];
}
}
//待定
评论区记录复习记录
评论