解题思路:
使用贪心算法
在每次循环迭代中,定义整数变量 salary 用于存储每个人的工资,并初始化一个计数变量 count 用于记录需要的纸币数量。同时,定义一个整数数组 money,其中包含了货币纸币的面额,从大到小排列。
使用 while 循环,不断尝试找零,直到工资为0或者所有面额都尝试过。如果工资大于等于当前面额的纸币,则将工资减去该面额,并增加 count 计数。否则,尝试下一个更小的面额。
#define _CRT_SECURE_NO_WARNINGS // 这是一个预处理器指令,用于禁用特定的编译器警告。在这种情况下,它禁用了与安全函数使用相关的警告。 #include <stdio.h> // 包含标准输入输出库,以便使用printf和scanf等函数。 int main() { int n; while (scanf("%d", &n) != EOF && n) { // 通过循环读取一个整数n,直到遇到EOF(文件结束符)或n为0时停止。 int salary; int count = 0; // 用于计数需要的纸币数量。 int money[] = { 100, 50, 10, 5, 2, 1 }; // 定义一个整数数组,表示货币纸币的面额。 for (int i = 0; i < n; i++) { // 循环处理每个人的工资。 scanf("%d", &salary); // 读取当前人的工资。 int j = 0; while (j < 6 && salary > 0) { // 在纸币面额数组上循环,并且只要工资大于0,就找零。 if (salary >= money[j]) { // 如果工资大于等于当前面额的纸币。 salary -= money[j]; // 减去当前面额的纸币。 count++; // 增加纸币数量的计数。 } else { j++; // 如果工资小于当前面额的纸币,则尝试下一个更小的面额。 } } } printf("%d\n", count); // 打印每个人找零所需的纸币数量。 } return 0; }
0.0分
1 人评分
WU-格式化数据输出 (C语言代码)浏览:1755 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:743 |
字符串输入输出函数 (C语言代码)浏览:2495 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:509 |
矩形面积交 (C语言代码)浏览:1314 |
良心推荐——>题解1049:C语言程序设计教程(第三版)课后习题11.1 (C语言描述——简单明了,时间复杂度低)浏览:1287 |
最好的,浏览:564 |
筛排处理 (C语言代码)浏览:788 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:459 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:657 |