现存在一堆面值为 1,2,5,10,20,50 面值的硬币,问找出总值为 N个单位的零钱的所使用的硬币的数量最少,输出最小值
#include <iostream>
using namespace std;
int values[100]; //硬币面值的数组
int main() {
int money,size;
cout << "输入要找零的金额: ";
cin >> money;
cout << "输入要面值的总数和种类: ";
cin >> size;
cout << "输入面值(空格隔开):";
for(int i = 0; i < size; i++) cin >> values[i];
int coinsUsed[money+5], mincoin;
for(int i = 1; i <= money; i++) {
mincoin = i; // 假设面值i换取最小的数量就是i
for (int j = 0; j < size; j++) {
if(values[j] <= i) { // 如果能够换取就一直换取
mincoin = min(mincoin,coinsUsed[i - values[j]] + 1);
}
}
coinsUsed[i] = mincoin;
}
cout<<"总共需要面币张数为"<<coinsUsed[money]<<endl;
return 0;
}