当求解总面值为 i 的找零最少硬币数 coinsUsed[ i ] 时,将其分解成求解 coinsUsed[ i – cents]和一个面值为 cents 元的硬币,由于 i – cents < i , 其解 coinsUsed[ i – cents] 已经存在,如果面值为 cents 的硬币满足题意,那么最终解 coinsUsed[ i ] 则等于 coinsUsed[ i – cents] 再加上...
比如,按照红色那条路走,就知道 5 使用了硬币面值3 和 2,故成功找零,此时 j=0了,这是一种找零方式 ==》 当j==0时,返回1三,代码实现public class DPCoinCharge { public static int chargeTypes(int[] coinsValues, int n){ int m = coinsValues.length; int[][] c = new int[m+1][n+1]; /...
动态规划算法求解硬币..动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,并将这些子问题的解保存起来,如果以后在求解较大子问题的时候需要用到这些子问题的解,就可以直接取出这些已经计算过的解而免去重复运算。保存
public class CoinsChange { /** * 硬币找零:动态规划算法 * * @param values * :保存每一种硬币的币值的数组 * @param valueKinds * :币值不同的硬币种类数量,即coinValue[]数组的大小 * @param money * :需要找零的面值 * @param coinsUsed * :保存面值为i的纸币找零所需的最小硬币数 */ public s...