下面 C++ 代码用于将输入金额换成最少币种组合方案,其实现算法是( )。
#include <iostream>
using namespace std;
#define N_COINS 7
int coins[N_COINS] = {100, 50, 20, 10, 5, 2, 1}; //货币面值,单位相同
int coins_used[N_COINS];
void find_coins(int money) {
for (int i = 0; i < N_COINS; i++) {
coins_used[i] = money / coins[i];
money = money % coins[i];
}
return;
}
int main() {
int money;
cin >> money; //输入要换算的金额
find_coins(money);
for (int i = 0; i < N_COINS; i++)
cout << coins_used[i] << endl;
return 0;
}仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】贪心算法|枚举算法|循环控制
本题考查 GESP 五级"算法策略"模块中的贪心算法。命题人故意选贪心而非枚举,卡住的是大量考生对"算法策略"与"程序结构"概念的混淆——五级学生最容易把"用循环写程序"等同于"迭代算法",把"尝试所有方案"等同于"枚举算法",这道题就是考你是否真的理解算法策略的本质。