现存在一堆面值为 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;
}
本文介绍了一个算法,用于解决如何使用最少数量的硬币来兑换任意金额的问题。通过动态规划的方法,该算法可以处理多种面额的硬币,并输出兑换指定金额所需的最少硬币数。
1015

被折叠的 条评论
为什么被折叠?



