问题:给定不同面额的硬币coins和一个总金额amount,求凑成总金额所需的最少硬币个数
思路:第一种方法使用递归法,枚举x使用第coinIndex个硬币的amount/coins[coinIndex]的个数,计算amound-coins[coinIndex] * x使用coinIndex后序硬币的个数,得到结果与x相加,即为所需要的总个数,总是更新最少硬币个数。
第二种方法是使用记忆化搜索,用dp(amount)表示凑成amount的最小硬币个数。则有dp(amount)= min(dp(amont-c(i) + 1)其中c(i)表示第i个coin的值。
第三种方法是使用第二种的从下往上递推法。
具体代码参考:
https://github.com/wuli2496/OJ/tree/master/LeetCode/Coin%20Change