Files
python/exercises/practice/change/example.py

26 lines
1014 B
Python
Raw Normal View History

def find_fewest_coins(coins, target):
if target < 0:
raise ValueError("cannot find negative change values")
min_coins_required = [1e9] * (target + 1)
last_coin = [0]*(target + 1)
2017-07-26 02:20:51 +05:30
min_coins_required[0] = 0
last_coin[0] = -1
for change in range(1, target + 1):
2017-07-26 02:20:51 +05:30
final_result = min_coins_required[change]
for coin in coins:
if coin <= change:
result = min_coins_required[change - coin] + 1
if result < final_result:
final_result = result
last_coin[change] = change - coin
min_coins_required[change] = final_result
if min_coins_required[target] == 1e9:
raise ValueError("no combination can add up to target")
2017-07-26 02:20:51 +05:30
else:
last_coin_value = target
2017-07-26 02:20:51 +05:30
array = []
while(last_coin[last_coin_value] != -1):
array.append(last_coin_value-last_coin[last_coin_value])
last_coin_value = last_coin[last_coin_value]
return array