多重集合的重数和众数

给定含有N个元素的多重集合S,每个元素在S中出现的次数称为该元素的'重数',多重集合S中'重数'最大的元素称为多重集合S的'众数','众数'的'重数'称为多重集合S的'重数'。

实现思路

  1. 遍历多重集合S,使用哈希表记录每个元素出现的次数。
  2. 找到哈希表中出现次数最多的元素,即为'众数'。
  3. 计算'众数'的'重数',即为哈希表中'众数'对应的值。
  4. 遍历哈希表,累加每个元素的'重数',即为多重集合S的'重数'。

伪代码

// 初始化哈希表
map<int, int> countMap;
int mode = 0; // 众数
int maxCount = 0; // 众数出现的次数
int totalCount = 0; // 多重集合S的重数

// 遍历多重集合S
for (int i = 0; i < N; i++) {
    // 将元素插入哈希表或更新哈希表中元素的计数器
    countMap[S[i]]++;

    // 更新众数和众数出现的次数
    if (countMap[S[i]] > maxCount) {
        maxCount = countMap[S[i]];
        mode = S[i];
    }
}

// 计算多重集合S的重数
for (auto it : countMap) {
    totalCount += it.second;
}

C++代码

#include <iostream>
#include <map>
using namespace std;

int main() {
    int N;
    cin >> N;

    // 读入多重集合S
    int S[N];
    for (int i = 0; i < N; i++) {
        cin >> S[i];
    }

    // 初始化哈希表
    map<int, int> countMap;
    int mode = 0; // 众数
    int maxCount = 0; // 众数出现的次数
    int totalCount = 0; // 多重集合S的重数

    // 遍历多重集合S
    for (int i = 0; i < N; i++) {
        // 将元素插入哈希表或更新哈希表中元素的计数器
        countMap[S[i]]++;

        // 更新众数和众数出现的次数
        if (countMap[S[i]] > maxCount) {
            maxCount = countMap[S[i]];
            mode = S[i];
        }
    }

    // 计算多重集合S的重数
    for (auto it : countMap) {
        totalCount += it.second;
    }

    // 输出结果
    cout << "多重集合S的重数:" << totalCount << endl;
    cout << "多重集合S的众数:" << mode << endl;
    cout << "多重集合S的重数:" << maxCount << endl;

    return 0;
}
C++实现多重集合的重数和众数计算

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

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