java硬币问题贪心算法_贪心算法——找纸币问题

该博客探讨了如何使用贪心算法解决找钱问题,即在给定不同面值纸币的情况下,找出支付特定金额所需的最少纸币数量。通过C++和Java两种编程语言实现了解决方案,强调了尽可能使用面值大的纸币的原则,并提供了算法的时间复杂度分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贪心算法——找纸币问题

问题主题:找钱

问题描述:

假设有1元、2元、5元、10元、20元、50元、100的纸币分别为c0, c1, c2, c3, c4, c5, c6,张。现在要用这些钱来支付K元,至少要用多少张纸币?如果能找,则输出纸币的张数,不能找则输出No

限制条件:

0<=c0, c1,c2,c3,c4,c5,c6<=109

0<=K<=109

样例:

输入

C0=3, c1=0, c2=2, c3=1, c4=0, c5=3, c6=5

输出

6

【解法一】

解题分析:

本题使用贪心算法,只需要考虑“尽可能多地使用面值大的纸币”,然后根据面值的大小从大到小排序依次选择。

程序实现:

C++

#include"iostream"

usingnamespacestd;

constintN = 7;

staticintK = 6200;

intmin(intnum1,intnum2);

intmomeyCount[N] = {3, 0, 2, 1, 0, 3, 5};

intvalue[N] = {1, 2, 5, 10, 20, 50, 100};

intgiveChange() {

intnum = 0;

for(inti = N-1; i >= 0; i 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值