1. Coin Change
  2. Coin Change II

Coin Change

dfs + memoization

dp (tabulation)

第一反应是dfs + memoization,可以通过test,但是非常的慢,不过通常这种组合都可以转换成dp。

接下来判断是否满足dp的条件:optimal substructure,只要确定较小数字的情况,就可以推到较大数字的情况。

overlapping of subproblem,当money amount = 100, 可能会重复算amount = 5的最少组成硬币数量。

dp的话,state: dp[0] = 0, 当money amount = 0的时候,只需要0枚硬币。

其中dp[i]表示钱数为i时的最小硬币数的找零,递推式为:

dp[i] = min(dp[i], dp[i - coins[j]] + 1);

其中coins[j]为第j个硬币,而i - coins[j]为钱数i减去其中一个硬币的值,剩余的钱数在dp数组中找到值,然后加1和当前dp数组中的值做比较,取较小的那个更新dp数组。

results matching ""

    No results matching ""