选取硬币问题
有1元,5元,10元,50元,100元,500元的硬币各c0,c1,c2,c3,c4, c5枚
现在要使用这些硬币支付n元,问最少需要多少枚硬币,假设至少存在一种方案。
应该尽可能使用500元的,然后再使用100元的.....使用贪心策略。
#include "stdafx.h"
#include<iostream>
#include<algorithm>
using namespace std;
const int V[6] = { 1, 5, 10, 50, 100, 500 };//硬币面额
int c[6];//每种面额硬币个数
int ans(int n)
{
int res = 0;
for (int i = 5; i >= 0; i--)
{
int t = min(n / V[i], c[i]);//如果当前不够,则为0,相当于不选择该种硬币.
n -= t*V[i];
res += t;
}
return res;
}
int main()
{
int n, i;
while (cin >> n)
{
for (i = 0; i < 6; i++)
cin >> c[i];
cout << ans(n) << endl;
}
}版权声明:本文为博主原创文章,未经博主允许不得转载。

浙公网安备 33010602011771号