您的位置:首页 > 其它

贪心算法设计 之最少硬币数目

2015-04-02 21:40 141 查看
//题目描述:现在有1元,5元,10元,50元,100元,500元的硬币各c1,c2...c6枚
//现在需要去付钱数为A元,问,至少需要多少枚硬币
//算法:只需要不断选择面值大的硬币就可以了,因为问题保证有解
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int A, v[6] = { 1, 5, 10, 50, 100, 500 }, c[6];
int main()
{
while (cin >> A){
memset(c, 0, sizeof(c));
//input
for (int i = 0; i < 6; i++){
cin >> c[i];
}
int ans = 0;
//from big to small
for (int i = 5; i >= 0; i--){
int t = min(A / v[i], c[i]);
A -= t*v[i];
ans += t;
}
cout << ans << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: