defrecMC(coinValueList, change): minCoins = change if change in coinValueList: return1 else: for i in [c for c in coinValueList if c <= change]: numCoins = 1 + recMC(coinValueList, change-i,knownResults) if numCoins < minCoins: minCoins = numCoins return minCoins print(recMC([1,2,10,25],63))
defdpMakeChange(coinValueList,change,minCoins,coinsUsed): for cents in range(change+1): coinCount = cents newCoin = 1 for j in [c for c in coinValueList if c <= cents]: if minCoins[cents-j] + 1 < coinCount: coinCount = minCoins[cents-j]+1 newCoin = j minCoins[cents] = coinCount coinsUsed[cents] = newCoin return minCoins[change]
print("Making change for",amnt,"requires") print(dpMakeChange(clist,amnt,coinCount,coinsUsed),"coins") print("They are:") printCoins(coinsUsed,amnt) print("The used list is as follows:") print(coinsUsed)