1、不限定硬币个数去组合硬币达到的指定的值。
dp[[j] 表示遍历到当下这个硬币时,组成金额j的方法数目。
i:代表硬币的可取的种类数
j:代表当前的金额
def waysToChange(n):
mod = 100000007
coins =[1,5,10,25]
dp = [0]*(n+1)
dp[0]=1 #形成金额0的组合数为1表示,只有一种方案,1枚也不选
for i in range(len(coins)):
for j in range(n+1):
if j >= coins[i]:
dp[j] = (dp[j]+dp[j-coins[i])%mod
return dp[-1][-1]
2、给定不同面额的硬币coins和一个总金额amout,凑成总金额所需最少的硬币个数。如果没有任何一种硬币组合组成总金额,返回-1。
def coinChange(coins,amount):
dp=[amount+1