Python分支界定算法找零最优解
时间: 2023-11-03 11:30:11 浏览: 93
Python中可以使用贪心算法来解决找零问题,但是贪心算法并不能保证得到最优解,因为它只会考虑当前局部最优解,而不会考虑全局最优解。因此,可以使用动态规划算法来解决这个问题。
具体来说,可以使用一个一维数组来表示找零的最小硬币数,数组中每个元素表示对应金额的最小硬币数。初始化数组所有元素为无穷大,表示当前金额无法找零。然后,对于每个硬币,遍历所有的金额,更新对应金额的最小硬币数。最终,数组最后一个元素即为最小硬币数。
下面是Python代码实现:
```python
def find_min_coins(coins, amount):
# 初始化数组
dp = [float('inf')]*(amount+1)
dp[0] = 0
# 更新数组
for coin in coins:
for i in range(coin, amount+1):
dp[i] = min(dp[i], dp[i-coin]+1)
# 返回最小硬币数
return dp[amount] if dp[amount] != float('inf') else -1
```
其中,coins为硬币面值的列表,amount为需要找零的金额。如果无法找零,则返回-1。
阅读全文