题目描述:
现有的钱币:coins=[1,2,5,7,10]
找零:change(假定为正整数)
求解:如何用最少的钱币进行找零
分析:可以使用动态规划
比如找零8元,可以将问题进行分解
dp[8]=dp[8-coins[j]]+1
即:
dp[8]=dp[8-1]+1=dp[7]+1
dp[8]=dp[8-2]+1=dp[6]+1
dp[8]=dp[8-5]+1=dp[3]+1
dp[8]=dp[8-7]+1=dp[1]+1
初始化:
dp=[change+1]*(change+1) #对应的dp[0],dp[1],dp[2]...dp[change]
dp[0]=0 #因为找0元需要0张钱币
使用的钱币初始化:
coins_used=[0]*(change+1)
代码:
def coin_change(coins,change,dp,coins_used):
'''利用动态规划求解找零需要的钱币张数,以及钱币的使用情况'''
for i in range(1,change+1):
#依次求解&#