File tree 1 file changed +35
-0
lines changed
1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change @@ -40,3 +40,38 @@ def rec_coin(target, coins):
40
40
min_coins = min (num_coins , min_coins )
41
41
42
42
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
You can’t perform that action at this time.
0 commit comments