Skip to content

Commit 995f1fb

Browse files
Coin Change Problem
1 parent 1ef2cfd commit 995f1fb

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Diff for: Practice-Problems/CoinChangeProblem.py

+35
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,38 @@ def rec_coin(target, coins):
4040
min_coins = min(num_coins, min_coins)
4141

4242
return min_coins
43+
44+
# Dynamic Programming Solution (Efficient)
45+
def rec_coin_dyn(target, coins, known_results = None):
46+
47+
if not known_results:
48+
49+
known_results = [None] * (target + 1)
50+
51+
# Default output to target
52+
min_coins = target
53+
54+
# Base Case
55+
if target in coins:
56+
57+
known_results[target] = 1
58+
return 1
59+
60+
# Return a known result if it is < 1
61+
elif known_results[target]:
62+
63+
return known_results[target]
64+
65+
else:
66+
67+
# For every coin value that is <= target
68+
for i in [c for c in coins if c <= target]:
69+
70+
num_coins = 1 + rec_coin_dyn(target - i, coins, known_results)
71+
72+
min_coins = min(num_coins, min_coins)
73+
74+
# Reset known results
75+
known_results[target] = min_coins
76+
77+
return min_coins

0 commit comments

Comments
 (0)