题目:给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。
def coins_change(coins,amount): dp = [0] * (amount+1) dp[0] = 1 for j in range(len(coins)): for i in range(1,amount+1): if i>=coins[j]: dp[i] = dp[i] + dp[i-coins[j]] return dp[-1] coins = [1,2,5] amount = 5 print(coins_change(coins,amount))
注:
此种硬币兑换问题,coins循环在外,由于硬币无数多个。