1、用C语言实现下面的算法,注意程序设计语言风格,例如注释、缩进等规则。 例6考虑用25美分、10美分、5美分和1美分硬币找n美分零钱的问题,使硬币总数尽可能少。可以通过在每一步都做局部最优的选择来设计一个找n美分零钱的贪婪算法,即在每一步选择可能的最大面值硬币使得加入到零钱后其总额不超过n美分。例如,要找67美分零钱,首先选择一个25美分(剩下42美分)。接着选择第二个25美分(剩下17美分),随后选择一个10美分(剩下7美分),随后选择一个5美分(剩下2美分),随后选择一个1美分(剩下1美分),最后选择一个1美分。
时间: 2024-02-21 13:56:52 浏览: 51
以下是用 C 语言实现的算法:
```c
#include <stdio.h>
void change(int n) {
int coins[4] = {25, 10, 5, 1};
int counts[4] = {0, 0, 0, 0};
int i = 0;
while (n > 0) {
counts[i] = n / coins[i];
n = n % coins[i];
i++;
}
printf("25美分硬币:%d个\n", counts[0]);
printf("10美分硬币:%d个\n", counts[1]);
printf("5美分硬币:%d个\n", counts[2]);
printf("1美分硬币:%d个\n", counts[3]);
}
int main() {
int n = 67;
change(n);
return 0;
}
```
注释:首先定义了硬币面值和数量两个数组,然后从大面值硬币开始循环,计算出当前面值硬币的数量,再将余数作为下一轮循环的输入。最后输出各种硬币的数量即可。
阅读全文