为什么我不能在硬币改变dp中重复使用相同的硬币?

时间:2014-01-05 15:33:36

标签: recursion tree dynamic-programming coin-change

示例:

鉴于20美元,我想用WAYS计算20美元兑换硬币= {5 $,10 $,15 $} 硬币的顺序无关紧要。

solution here

解决方案说:总路数=使用硬币+不使用硬币:                     total_ways = count(S,m - 1,n)+ count(S,m,n-S [m-1])

以树的形式:               tree

1 个答案:

答案 0 :(得分:1)

  

解决方案说:总数=使用硬币+不使用硬币   :total_ways = count(S,m - 1,n)+ count(S,m,n-S [m-1])

我认为你有点误解了解决方案声明。

它的确切含义是:

1) Optimal Substructure
To count total number solutions, we can divide all set solutions in two sets.
1) Solutions that do not contain mth coin (or Sm).
2) Solutions that contain at least one Sm.

这是一种将问题细分为同一问题的两个较小版本的方法。

在不使用硬币的情况下可以完成相同目标总数和较小硬币集的相同问题。

但是这个方法的数量可以通过完成至少这个硬币中的一个与目标总数减去硬币大小的问题相同,但是允许相同的一组硬币。

在第二组中,确实允许再次使用相同的硬币。