零钱兑换II 一维数组
时间: 2023-09-14 12:10:40 浏览: 112
零钱兑换II是一个动态规划问题,你可以使用一维数组来解决。假设给定一个金额amount和一组硬币面额coins,我们要计算出凑成金额amount所需的最少硬币数量。
首先,创建一个长度为amount + 1的一维数组dp,用于存储每个金额所需的最少硬币数量。初始化dp数组的所有元素为正无穷大,除了dp[0]为0,表示金额为0时不需要任何硬币。
接下来,遍历硬币数组coins,对于每个硬币面额coin,从coin到amount逐个计算每个金额所需的最少硬币数量。对于每个金额i,更新dp[i]的值为dp[i - coin] + 1。
最后,返回dp[amount]作为结果,如果dp[amount]仍为正无穷大,则表示无法凑成金额amount。
以下是使用一维数组解决零钱兑换II问题的示例代码(使用Python语言实现):
```python
def change(amount, coins):
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
```
这样,你可以通过调用change(amount, coins)函数,传入金额和硬币数组来得到结果。
阅读全文