最简单的硬币问题:
题目描述:
有1,5,10,50,100,500的硬币各C1,C5,C10,C50,C100,C500枚,现在要用这些硬币来支付A元,最少需要多少枚硬币。
解题思路:
贪心算法,竟可能多的使用面值最大的硬币的这一贪心的策略来切了。
1 #include <iostream> 2 using namespace std; 3 const int V[6]={1,5,10,50,100,500}; 4 int C[6]={3,2,1,3,0,2}; 5 int A=620; 6 void solve(){ 7 int ans=0; 8 for(int i=5;i>=0;i--) 9 { 10 int t=min(A/V[i],C[i]); 11 A-=t*V[i]; 12 ans+=t; 13 } 14 cout<<ans<<endl; 15 } 16 int main() { 17 solve(); 18 return 0; 19 }