贪心算法:硬币问题

硬币问题
问题描述:
有1元,5元,10元,50元,100元若干枚,现在要用这些硬币来支付A元。最少需要多少枚硬币呢?假设至少存在一种方案。
贪心思想:
很正常的想,我们自然想要先用100块,直到不能再用,然后用50元。依次进行下去。
正确性:
  不妨我们假设利用贪心思想得到的各个硬币的使用个数为a1,a2,a3,a4,a5.现假设有更少的选择,不妨设为b1,b2,b3,b4,b5.即
b1+b2+b3+b4+b5<a1+a2+a3+a4+a5
而且我们有
b1+b2*5+b3*10+b4*50+b5*100=A
a1+a2*5+a3*10+a4*50+a5*100=A
那么
从另一个角度考虑,如果我不把当前可选的最大面值的选到最大个数,不妨假设现在可选5张100,但选了4张100,那么这剩下的100必须用剩下的来拼,肯定用的张数要大于1,那么我就必须选最多。依次进行下去。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值