diff --git a/dynamic_programming/coin_change_II.py b/dynamic_programming/coin_change_II.py new file mode 100644 index 000000000000..5581780b1139 --- /dev/null +++ b/dynamic_programming/coin_change_II.py @@ -0,0 +1,21 @@ +from typing import List + +class Solution: + def change(self, amount: int, coins: List[int]) -> int: + cache = {} + def dfs(i,a): + if a == amount: + return 1 + if a > amount: + return 0 + if i == len(coins): + return 0 + if (i,a) in cache: + return cache[(i,a)] + cache[(i,a)] = dfs(i,a + coins[i]) +dfs(i+1, a) + return cache[(i,a)] + return dfs(0,0) + +sol = Solution() +# for example +print(sol.change(5, [1,2,5])) # Output: 4