LeetCode 322 Coin Change (python)
分析
这题本质上是一个完全背包问题,我们有给定面额的货币,用它们得到一个金额,每种面额的货币使用数量不限。很明显了,完全背包
状态定义
既然是背包问题,现在再来看看怎么定义状态。依然很明显。==f[i]==表示组成金额i需要最少的货币个数。f[0] = 0(显然)。
那么其他状态呢?也可以初始化为0吗?
不可以,从合法答案角度来考虑f[i] = 0, i>0这是不肯存在的。从背包问题来看,这是要求背包恰好装满。
所以初始化,除了f[0]=0,其他的都取极大值(题目要最小的嘛,反过来我们就初始化极小值),保证都是从状态**f[0]**转移而来。
状态转移
f[i] = min