TODO
解法 1 (dynamic-programming-01.js)
动态规划的解法.
-
构造一个长度为
sum + 1
的数组 (表示完成每个 case 最少需要几个硬币). -
将数组全部置为正无穷, 0 的位置置为 0.
-
遍历整个硬币数组 (意为每增加一种硬币的 case).
-
在数组中每个小于正无穷 (也就是可以构造出来的 case) 的位置上开始如下计算:
-
当前硬币面额 * n (从 1 到总和值大于 sum) + 当前位置值
-
array[上面的值] 是否大于 构造当前 case 硬币数 + 当前面额硬币的数量
-
如果大于, 更新数量值, 表示为更节省的办法.
-
-
一直遍历完所有硬币, 查看 array[sum] 位置的情况, 有数字就表示有结果, 是正无穷就表示没有结果.