1def change(amount, coins):
2 n = len(coins)
3 dp = [[0] * (amount + 1) for _ in range(n + 1)]
4
5 # Base case: one way to make 0
6 for i in range(n + 1):
7 dp[i][0] = 1
8
9 for i in range(1, n + 1):
10 coin = coins[i - 1]
11 for j in range(1, amount + 1):
12 # Ways without using current coin
13 dp[i][j] = dp[i - 1][j]
14
15 # Add ways using current coin
16 if j >= coin:
17 dp[i][j] += dp[i][j - coin]
18
19 return dp[n][amount]