ACM_程序设计竞赛:贪心算法:硬币问题

来源:互联网 发布:csol抽奖软件 编辑:程序博客网 时间:2024/05/29 08:35
  • 贪心算法:就是贪心的选取当前最优策略的算法设计方法。

有1元,5元,10元,50元,100元,500元的硬币,各C1,C5,C10,C50,C100,C500枚。现在要用来支付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;}
0 0
原创粉丝点击