/*假设有一种货币,它有面值为1分,2分,5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱。*/
//贪婪法解决硬币找零问题 #include <iostream> using namespace std; #define ONEFEN 1 #define TWOFEN 2 #define FIVEFEN 5 #define ONEJIAO 10 int main() { int money; int onefen = 0, twofen = 0, fivefen = 0, onejiao = 0; //定义每个钱对应的个数并初始化 cout << "输入要找零的钱(以分为单位):"; cin >> money; //不断尝试每一种硬币 if (money >= ONEJIAO) { onejiao = money / ONEJIAO; money %= ONEJIAO;//等价于 money = money %ONEJIAO;将余数再赋值给money } if (money >= FIVEFEN) { fivefen = 1; money -= FIVEFEN;//等价于 money = money - FIVEFEN;将余数再赋值给money } if (money >= TWOFEN){ twofen = money / TWOFEN; money %= TWOFEN; } if (money >= ONEFEN){ onefen = 1; } //输出结果 cout << "需要一角硬币 " << onejiao << "个" << endl; cout << "需要五分硬币 " << fivefen<< "个" << endl; cout << "需要二分硬币 " << twofen << "个" << endl; cout << "需要一分硬币 " << onefen << "个" << endl; system("pause");//我用的是VS2013,来暂停黑窗口,不然会闪退 return 0; }