给定数组arr,arr中所有的值都为正数且不重复,每个值代表一种面值的货币,每种面的值货币可以使用任意张,再给定一个正数aim,代表要找的钱数,求组成aim的最少货币数。
举例:arr=[5,2,3],aim = 20。
4张5元可以组成20元,其它的方法都会需要更多的方法数,所以返回4。
arr=[5,2,3],aim=0。
不用任何货币就可以组成0元,返回0;
arr=[5,2,3],aim=2。
根本就无法组成2元,钱找不开的情况下默认返回-1。
暴力递归的方法
1 | // |
动态规划的方法
1 | public static int minCoins2 (int[] arr,int aim) { |