dp[i] [j] 表示若只使用前 i 个物品,当背包容量为 j 时,有 dp[i] [j] 种方法可以装满背包。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# @lc code=start classSolution: defchange(self, amount: int, coins: List[int]) -> int: n=len(coins) dp = [[0for _ inrange(amount+1)] for _ inrange(n+1)] for i inrange(n+1): dp[i][0] = 1
for i inrange(1, n+1): for j inrange(1, amount+1): if j-coins[i-1]>=0: dp[i][j] = dp[i-1][j]+dp[i][j-coins[i-1]] else: dp[i][j]=dp[i-1][j] return dp[n][amount] # @lc code=end