基于贪心算法钱币找零
时间: 2023-12-12 10:35:44 浏览: 59
基于贪心算法的钱币找零问题是指在给定一定面额的硬币和一个需要找零的金额时,如何使用最少数量的硬币找零。贪心算法的思想是每次选择面额最大的硬币,直到找零金额为0或者无法再找到更大面额的硬币为止。
以下是基于贪心算法的钱币找零的Python代码实现:
```python
def coinChange(coins, amount):
coins.sort(reverse=True) # 将硬币面额从大到小排序
res = 0
for coin in coins:
if amount >= coin:
res += amount // coin # 计算当前面额硬币的数量
amount %= coin # 计算剩余需要找零的金额
if amount != 0:
return -1 # 如果无法找零,则返回-1
return res
coins = [1, 5, 10, 50, 100]
amount = 123
print(coinChange(coins, amount)) # 输出:5
```
上述代码中,我们首先将硬币面额从大到小排序,然后依次选择面额最大的硬币,计算当前面额硬币的数量,并计算剩余需要找零的金额。如果无法找零,则返回-1。
相关问题
贪心算法硬币找零java
贪心算法是一种用于解决找零问题的方法,通过选择面额最大的硬币来进行找零,并不断减少找零金额,直到找零金额为0为止。下面是一个使用Java语言实现贪心算法进行硬币找零的示例代码:
```java
public class CoinChange {
public static void coinChange(int[] coins, int amount) {
Arrays.sort(coins);
int count = 0;
for (int i = coins.length - 1; i >= 0; i--) {
if (coins[i] <= amount) {
int num = amount / coins[i];
count += num;
amount -= num * coins[i];
}
}
System.out.println("最少需要" + count + "个硬币来找零。");
}
public static void main(String[] args) {
int[] coins = {1, 5, 10, 25};
int amount = 43;
coinChange(coins, amount);
}
}
```
这段代码中,我们首先对硬币面额进行排序,然后从面额最大的硬币开始遍历。如果当前硬币的面额小于等于找零金额,我们就将找零金额除以当前硬币的面额得到需要的硬币数量,并更新找零金额。最后输出所需的最少硬币数量。
贪心算法硬币找零问题python
好的,下面是一个基于贪心算法的 Python 代码,用于解决硬币找零问题:
```python
def coinChange(coins, amount):
coins.sort(reverse=True)
res = 0
for coin in coins:
if amount >= coin:
res += amount // coin
amount %= coin
if amount != 0:
return -1
return res
```
其中,`coins` 表示硬币的面值列表,`amount` 表示需要找零的总金额。函数首先将硬币列表按面值从大到小排序,然后从大到小遍历硬币列表,每次都尽可能地使用面值最大的硬币,直到找零的金额为 0 或者无法再用更大面值的硬币找零为止。如果最终找零的金额不为 0,则说明无法找零,返回 -1;否则,返回找零所需的最少硬币数量。