码迷,mamicode.com
首页 > 其他好文 > 详细

硬币问题

时间:2020-01-16 12:34:58      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:ios   span   使用   代码实现   ace   clu   方案   return   限制   

题目:有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,C5= 2,C10= 1,C50=3,C100= 0,C500= 2, A=620

输出:6

分析:这是生活中的实际问题,凭直觉,可以知道先使用最大的500的硬币,剩下的用100元 的硬币,再用50元的,再用10元的,再用5元的,最后用1元的。很明显这是一个贪心策略

具体代码实现如下:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int V[6]={1,5,10,50,100,500};
 5 int C[6];
 6 int A;
 7 
 8 int main()
 9 {
10     for(int i=0; i<6; i++)
11         cin>>C[i];
12     cin>>A;
13     int ans=0;
14     for(int i=5; i>=0; i--)
15     {
16         int t=min(A/V[i],C[i]);//t为使用硬币i的枚数
17         A-=t*V[i];
18         ans+=t; 
19     }
20     cout<<ans;
21     return 0;
22 }

硬币问题

标签:ios   span   使用   代码实现   ace   clu   方案   return   限制   

原文地址:https://www.cnblogs.com/Si-wuxie/p/12200552.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!