有1元、5元、10元、50元、100元、500元的硬币各C1 C5 C10 C50 C100 C500 。现在要用这些硬币来支付A元,最少需要多少枚硬币?
优化使用面值大的硬币。
贪心法就是遵循某种规则,不断贪心地选取当前最优策略的算法设计方法.
搜索算法和动态规划算法是在多种策略中选取最优解,而贪心算法则不同,它遵循某种规则,不断地选取当前最优解。
1 const int V[6]={1,5,10,50,100,500}; 2 3 //输入个数 4 int C[6]; 5 int A; 6 7 void solve(){ 8 int ans=0; 9 10 for(int i=5; i>=0; i--){ 11 int t=min(A/V[i],C[i]); //使用硬币i的枚数 12 A-=t*V[i]; 13 ans+=t; 14 } 15 16 printf("%d\n",ans); 17 }
来自:<<挑战程序设计竞赛>>
时间: 2024-10-13 21:31:14