• 重数和众数问题——C语言实现


    题还是很简单的,理清思路就可以了♪(・ω・)ノ

    问题描述:
    给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。
    例如,S={1,2,2,2,3,4}。多重集S的众数是2,其重数为3。
     

    样例输入:S={1,2,2,2,3,4}


    样例输出:该多重集合众数是:2,重数是:3

    1. #include
    2. #include
    3. int main() {
    4. int a[] = { 1,2,2,2,3,4 };//多重集合
    5. int size = sizeof(a) / sizeof(int);//记算数组的大小
    6. int* b = malloc(sizeof(a));//用来记录每个数出现的个数(2)
    7. //int b[6] = { 0 };(2)
    8. int i = 0;
    9. int j = 0;
    10. //把b后面size个元素置为0
    11. for (i = 0;i < size;i++) {
    12. b[i] = 0;
    13. }
    14. int k = -1;//用来记录下标
    15. for (i = 0;i < size;i++) {
    16. for (j = 0;j < size;j++) {
    17. if (a[i] == a[j]) {
    18. b[i]++;
    19. }
    20. }
    21. }
    22. int max = b[0];//用来比较出现的个数,哪个最多
    23. for (i = 1;i < size;i++) {
    24. if (b[i] > max) {
    25. max = b[i];
    26. k = i;//把下标记录下来
    27. }
    28. }
    29. printf("该多重集合众数是:%d,重数是:%d", a[k], b[k]);
    30. return 0;
    31. }

    注:上面的代码中的(1)和(2)都是可以的!

    但是使用 {int* b = malloc(sizeof(a));//用来记录每个数出现的个数} 的话,就必须有如下这段代码,将b后面指向地址的内容赋值为0。

    //把b后面size个元素置为0
        for (i = 0;i < size;i++) {
            b[i] = 0;
        }

  • 相关阅读:
    深入了解原型与原型链
    随心记录0816
    ElasticSearch学习
    如何让别人看不懂你的 JS 代码?把你当大佬!
    欧姆龙PLC串口通讯详解
    如何使用NE555产生方波
    第八天 Python爬虫之Rquests库&&打码平台的简单使用
    人工神经网络的算法原理,最简单的神经网络算法
    redis配置文件详情
    c#ushort转十六进制
  • 原文地址:https://blog.csdn.net/ANNE_fly/article/details/132911742