C++ 算法实现:计算多重集合的众数及其重数

本文介绍使用 C++ 算法实现计算给定 n 个元素的多重集合 S 的众数及其重数,并提供详细的代码示例和解释。

#include <iostream>
#include <vector>
#include <unordered_map>

std::pair<int, int> calculateMode(const std::vector<int>& S) {
    std::unordered_map<int, int> frequencyMap;

    // 统计每个元素出现的频率
    for (int num : S) {
        frequencyMap[num]++;
    }

    int mode = 0; // 众数
    int maxFrequency = 0; // 最大频率

    // 找到最大频率及其对应的众数
    for (auto& pair : frequencyMap) {
        if (pair.second > maxFrequency) {
            mode = pair.first;
            maxFrequency = pair.second;
        }
    }

    return std::make_pair(mode, maxFrequency);
}

int main() {
    int n;
    std::cout << "请输入多重集合 S 的元素个数:";
    std::cin >> n;

    std::vector<int> S(n);

    std::cout << "请输入多重集合 S 的元素:";
    for (int i = 0; i < n; i++) {
        std::cin >> S[i];
    }

    std::pair<int, int> modeAndFrequency = calculateMode(S);

    std::cout << "众数为:" << modeAndFrequency.first << std::endl;
    std::cout << "重数为:" << modeAndFrequency.second << std::endl;

    return 0;
}

在这个算法中,我们使用了 unordered_map 来记录每个元素出现的频率。然后,我们遍历 frequencyMap,找到出现频率最高的元素及其对应的频率。最后,我们将众数和重数作为结果返回。

C++ 算法实现:计算多重集合的众数及其重数

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

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