"""
322. 零钱兑换
https://leetcode-cn.com/problems/coin-change/solution/yong-bei-bao-wen-ti-si-xiang-lai-li-jie-ying-bi-zh/
思路:动态规划法,需要理解:dp[amount]=min(dp[amount],dp[amount-coin]+1)
1.定义dp区域[0,amount+1],并初始化最大值(用于min比较)
2.循环coin面值
3.从当前coin值循环至value(amount-coin>=0)
4.计算当前值所需要最小硬币值dp[value]=min(dp[amount],dp[amount-coin]+1)
5.输出结果;没有对应结果,输出-1
注意:coin按小->大有序排序好
初始化最大值->float('inf')
初始化dp[0]=0;表示value=0,硬币数量=0
例子:
0 1 2 3 4 5 6 7 8 9 10 11
1: 1 1 1 1 1 1 1 1 1 1 1
2: 1 2 2 3 3 4 4 5 5 6
5: 1 2 2 3 3 2 3
dp: 0 1 2
"""
def coinChange(coins, amount):
dp=[float('inf')]*(amount+1) #定义动态规划所需要数组区域
dp[0]=0 #初始化dp[0]值
for coin in coins: #循环co