要求
现在有1元、5元、10元、50元、100元、500元的硬币,有
C1
,
C2
,
C3
,
C4
,
C5
。
现在需要用这些硬币来支付A元,最少需要多少硬币?
输入格式
输入需要输入5种硬币的数量和需要支付的钱
输出格式
输出需要有用了多少硬币以及每种硬币各花了多少
测试输入
10000 100 50 20 10 5
5000
测试输出
Cost = 85: 1(0) 5(0) 10(50) 50(20) 100(10) 500(5)
解题思路
用贪心法来解决
代码
#include<iostream>
using namespace std;
int main() {
int rmb[6] = {1, 5, 10, 50, 100, 500};
int rmbNumber[6];
int pay;
for (int i = 0; i < 6; i++) {
cin >> rmbNumber[i];
}
cin >> pay;
int cost = 0;
for (int i = 5; i >= 0; i--) {
int tempCost = min(pay / rmb[i], rmbNumber[i]);
pay -= tempCost * rmb[i];
rmbNumber[i] = tempCost;
cost += tempCost;
}
if (pay > 0) {
cout << "pay = " << pay << " ";
}
cout << "Cost = " << cost << ": ";
for (int i = 0; i < 6; i++) {
cout << rmb[i] << "(" << rmbNumber[i] << ") ";
}
cout << endl;
return 0;
}