贪心算法解决硬币问题

文章介绍了一种利用贪心算法解决如何用最少的硬币凑足特定金额的问题,具体例子是11元。首先按面额从大到小排序硬币(5元,3元,1元),然后依次用最大面额的硬币尽可能多的抵消金额,直到金额为0。这种方法可以得到最少的硬币数量。
摘要由CSDN通过智能技术生成

题目:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元

使用贪心算法非常简洁,从最大硬币面额开始算起,就会使用最少硬币

t=[1,3,5]    #硬币面额
def change(t,n):
	m=[0 for _ in range(len(t))]     #创建一个跟硬币面额数一致的数组,用来存储对应的面额硬币的个数,初始为0
	count=0
	t.sort(reverse=True)                      #将硬币面额从大到下拍好序
	for i,money in enumerate(t):
		m[i] = n // money
		n = n % money
	for j in m:
		count+=j
	return count

print(change(t,11))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javascript_good

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值