问题:
假设有几种硬币,如1、3、5,并且数量无限。请找出能够组成某个数目的找零所使用最少的硬币数。
方法:dp, dp[i]: 面值为i的硬币所需要的硬币最少个数,dp[i]= 1+min(dp[i-coins[0]], dp[i-coins[1]],...)
def change_coins(coins, amount): dp = [float('inf')] * (amount+1) dp[0] = 0 for i in range(1, amount+1): for c in coins: if amount - c > 0: dp[i] = min(dp[i], dp[i-c] + 1) if dp[-1] == float("inf"): return -1 else: return dp[-1]