程序设计:贪心算法解决硬币问题
来源:互联网 发布:被子品牌推荐知乎 编辑:程序博客网 时间:2024/05/22 11:35
硬币问题
问题描述:
有1元、5元、10元、50元、100元、500元的硬币各C1,C5,C10,C50,C100,C500枚。现在要用这些硬币来支付A元,最少需要多少枚硬币?假设本题至少存在一种支付方案。
限制条件:
0<=C1,C5,C10,C50,C100,C500<=10的9次方
0<= A <= 10的9次方
输入:
C1 = 3
C2 = 2
C10 = 1
C50 = 3
C100 = 0
C500 = 2
A = 620
输出:
6(500元硬币1枚,50元硬币2枚,10元硬币1枚,5元硬币2枚,合计6枚)
思路:为了尽量地减少硬币的数量,我们首先得尽可能多地使用500元硬币,剩余部分尽可能多地使用100元硬币,剩余部分尽可能多地使用50元硬币,剩余部分尽可能多地使用10元硬币,再剩余部分尽可能多地使用5元硬币,最后的部分使用1元硬币支付。
也就是优先使用大面值的硬币。使用贪心算法
主要代码部分:
const int V[6] = {1,5,10,50,100,500}//输入int C[6];int A;void solve(){ int ans = 0; //对5个面值的硬币一一进行判定 for(int i = 5; i>= 0;i--) { //取最小值:接下来最大面值硬币数量和钱数与该面值的比值,哪个小就把值赋给t,这个值就是当前面值的硬币应该取的数量,然后一一加起来得到最终的数量 int t = min(A/V[i],C[i]); A -= t * V[i]; ans += t; } printf("%d\n",ans);}
0 0
- 程序设计:贪心算法解决硬币问题
- ACM_程序设计竞赛:贪心算法:硬币问题
- 贪心算法:硬币问题
- 贪心法解决硬币问题
- 最少硬币问题--贪心算法
- 贪心算法(硬币问题)
- 贪心算法之硬币问题
- 挑战程序设计竞赛: 硬币问题, 一直贪心
- (培养锻炼程序设计的逻辑脑)硬币问题 --- 贪心算法
- C++典型贪心算法--找硬币问题
- 使用贪心算法实现硬币找零问题
- 贪心算法——硬币问题
- 贪心算法解硬币找零问题
- 贪心算法-找硬币
- 贪心算法-翻硬币
- 硬币问题(贪心)
- 硬币问题 (贪心)
- 贪心算法最简单的硬币找钱问题
- Python 安装第三方库的方法(Windows)
- Java多线程编码的变体
- 堆和栈的区别
- HTML学习记录
- app与后台的token、sessionId、RSA加密登录认证与安全解决方案
- 程序设计:贪心算法解决硬币问题
- matlab 工具函数、matlab toolbox(工具箱)
- MongoDB讲解01
- HDU ACM 11 2081 手机短号
- exists的简单理解
- 自动化管理工具Rundeck
- 徒手hypervisor(一)
- leetCode的数独题目
- java实现八皇后可视化输出