题目
解析
如果做过332 coin change1的话,这道题目相对来说应该会更简单。因为思路非常清晰,对于某个状态来说,只有两种可能性,取当前的coin或者不取当前的coin,分别对应了两个sub problem。所以定义一个二维dp数组,状态转移方程如下:
# dp[i][j] 代表用前i个coin,有多少种方式组成j
dp[i][j] = dp[i-1][j] # 代表不取当前coin
+ dp[i][j-coin] # 代表取当前coin
这边有一点要注意的是初始化,当amount=0的时候,我们认为只有一种方式能够达成,就是不做任何操作
python代码如下:
class Solution:
def change(self, amount: int, coins: List[int]) ->