ACM_程序设计竞赛:贪心算法:硬币问题
2016-04-05 01:36
387 查看
贪心算法:就是贪心的选取当前最优策略的算法设计方法。
有1元,5元,10元,50元,100元,500元的硬币,各C1,C5,C10,C50,C100,C500C_1,C_5,C_{10},C_{50},C_{100},C_{500}枚。现在要用来支付A元,最少需要各种硬币多少。
有1元,5元,10元,50元,100元,500元的硬币,各C1,C5,C10,C50,C100,C500C_1,C_5,C_{10},C_{50},C_{100},C_{500}枚。现在要用来支付A元,最少需要各种硬币多少。
/* [输入] c1=3,c5=2,c10=1,c50=3,c100=0,c500=2,A=620 [输出] 6(500的1个,50的2个,10的1个,5元的2个,合计6个) [算法] 1. 优先使用大面值 */ #include<iostream> using namespace std; #define min(a, b) ((a) <= (b) ? (a) : (b)) const int v[6]={1,5,10,50,100,500}; int A; //面值 const int numbers=6; int c[numbers];//c[0]=c1, c[1]=c5,..... void solve() { int ans=0; for(int i=5;i>=0;i--){ int t=min(A/v[i],c[i]); //使用硬币i的个数 A-=t*v[i]; ans+=t; } cout<<"输出结果"<<ans<<endl; } int main(int ac, char* av[]) { while(cin>>A){ for(int i=0;i<numbers;i++) cin>>c[i]; solve(); } return 0; }
相关文章推荐
- 用OpenInventor实现的NeHe OpenGL教程-第七课
- 用OpenInventor实现的NeHe OpenGL教程-第六课
- 用OpenInventor实现的NeHe OpenGL教程-第五课
- django之创建第7-1个项目-url配置高级
- ASP.NET MVC5 入门
- iOS:关于“类”这个super且接地气的爸爸
- CKeditor、CKFinder的安装配置
- 环的基本概念
- 用OpenInventor实现的NeHe OpenGL教程-第四课
- 揭秘DOM中data和nodeValue属性同步改变那些事
- 用OpenInventor实现的NeHe OpenGL教程-第三课
- 用OpenInventor实现的NeHe OpenGL教程-第二课
- jquery无限级下拉框
- 用OpenInventor实现的NeHe OpenGL教程-第一课
- HDU 3594 Cactus 有向仙人掌图判定
- django之创建第7个项目-url配置
- 初学鸡精回归分析暨spss初演练小课题
- 开源 iOS 项目分类索引大全
- C#获取本机上所有网络接口及真实IP地址信息
- 二叉搜索树BinarySearchTree的实现