贪心算法找零钱问题python代码
时间: 2023-05-12 12:07:32 浏览: 134
以下是贪心算法找零钱问题的 Python 代码:
def findMinCoins(coins, V):
# 初始化结果列表和剩余价值
res = []
remaining = V
# 从最大面值的硬币开始遍历
for coin in sorted(coins, reverse=True):
# 如果当前硬币的面值小于等于剩余价值
while coin <= remaining:
# 将当前硬币加入结果列表
res.append(coin)
# 更新剩余价值
remaining -= coin
return res
coins = [1, 5, 10, 25]
V = 47
print(findMinCoins(coins, V))
输出结果为:[25, 10, 10, 1, 1]
相关问题
贪婪算法找零钱python
可以使用贪心算法解决找零钱问题,即每次找最大面额的硬币,直到总金额减为0。以下是 Python 代码示例:
```python
def greedy_coin_change(amount, coins):
coins.sort(reverse=True)
count = 0
for coin in coins:
while amount >= coin:
amount -= coin
count += 1
return count
```
其中,`amount` 是需要找零的金额,`coins` 是可用的硬币面额列表。函数返回最少需要找的硬币数量。
找零钱问题贪心算法py
找零钱问题是指在给定一定面额的硬币和纸币的情况下,如何用最少的硬币和纸币来凑出一个指定的金额。贪心算法是一种常用的解决找零钱问题的方法,它的基本思想是每次选择面额最大的硬币或纸币来凑出指定金额,直到凑出的金额等于指定金额为止。使用Python语言编写的贪心算法可以直接运行,输入零钱金额后,输出找的零钱面值和数量。你可以参考以下代码实现:
```python
def change_money(money, coins):
coins.sort(reverse=True)
res = []
for coin in coins:
while money >= coin:
res.append(coin)
money -= coin
return res
if __name__ == '__main__':
coins = [1, 5, 10, 50, 100]
money = int(input("请输入零钱金额:"))
res = change_money(money, coins)
print("找零面值和数量为:")
for coin in set(res):
print("{}元的硬币{}个".format(coin, res.count(coin)))
```
阅读全文