实验目的:使用贪心算法求解一个序列中出现次数最多的元素。\n\n实验环境:使用C语言编程环境。\n\n实验内容:\n1. 输入n个正整数。\n2. 统计每个数出现的次数。\n3. 找出出现次数最多的数。\n4. 如果有多个出现次数最多的数,输出其中最小的数。\n\n算法设计:\n1. 创建一个数组count,用于统计每个数出现的次数。\n2. 遍历输入的n个正整数,对于每个数num,在count[num]的位置加1。\n3. 创建两个变量maxCount和maxNum,分别用于记录出现次数最多的数的次数和数值。\n4. 遍历count数组,找到出现次数最多的数,即count[i]的值大于maxCount时,更新maxCount和maxNum。\n5. 输出maxNum。\n\n伪代码:\n\n输入n个正整数\n创建数组count,大小为最大输入的数加1\nmaxCount = 0\nmaxNum = 0\n\nfor i = 1 to n do\n 输入num\n count[num] = count[num] + 1\n if count[num] > maxCount then\n maxCount = count[num]\n maxNum = num\n end if\nend for\n\n输出maxNum\n\n\n程序清单:\nc\n#include <stdio.h>\n\n#define MAX_SIZE 100\n\nint main() {\n int n, num, maxCount = 0, maxNum = 0;\n int count[MAX_SIZE + 1] = {0};\n\n printf("请输入正整数的个数:");\n scanf("%d", &n);\n\n printf("请输入%d个正整数:", n);\n for (int i = 0; i < n; i++) {\n scanf("%d", &num);\n count[num]++;\n if (count[num] > maxCount) {\n maxCount = count[num];\n maxNum = num;\n }\n }\n\n printf("出现次数最多的数为:%d\n", maxNum);\n\n return 0;\n}\n\n\n主要运行:\n\n请输入正整数的个数:8\n请输入8个正整数:1 2 3 2 4 3 4 4\n出现次数最多的数为:4\n\n\n界面截图:\n\n请输入正整数的个数:8\n请输入8个正整数:1 2 3 2 4 3 4 4\n出现次数最多的数为:4\n\n\n实验总结:在调试程序时,需要注意数组大小的设定,确保能够容纳最大输入的数值。在统计出现次数最多的数时,要遍历count数组,找到出现次数最多的数。


原文地址: https://www.cveoy.top/t/topic/pv5M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录