题目: 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 分析: 第一想法是想枚举出所有的结果,然后在这些结果中选择最少硬币数量的组合,因此套用回溯法(即for循环+bfs),但是运行超时,动态规划解法才是本题正解。 class Solution { public int coinChange(int[] coins, int amount) {