#include <iostream>
#include <map>

int main() {
    int n;
    std::cin >> n;
    
    std::map<int, int> countMap;
    
    for (int i = 0; i < n; i++) {
        int num;
        std::cin >> num;
        countMap[num]++;
    }
    
    for (auto it = countMap.begin(); it != countMap.end(); it++) {
        std::cout << it->first << ' ' << it->second << std::endl;
    }
    
    return 0;
}

代码解释:

  1. 头文件:

    • iostream:用于标准输入输出流,例如 cincout
    • map:用于创建键值对映射,方便统计不同数字出现的次数。
  2. 主函数:

    • int n;: 定义变量 n 存储输入的自然数个数
    • std::cin >> n;: 从标准输入读取 n 的值
    • std::map<int, int> countMap;: 创建一个名为 countMapmap,用于存储每个自然数和其出现次数。int, int 表示键值对类型,键为自然数,值为其出现次数。
    • 循环读取数据:
      • for (int i = 0; i < n; i++) { ... }: 循环读取 n 个自然数。
      • int num;: 定义变量 num 存储当前读取的自然数。
      • std::cin >> num;: 从标准输入读取 num 的值
      • countMap[num]++;: 使用 num 作为键,在 countMap 中查找是否存在该键,如果存在则将对应的值(出现次数)加 1;如果不存在则创建该键并将其对应的值设置为 1。
    • 输出统计结果:
      • for (auto it = countMap.begin(); it != countMap.end(); it++) { ... }: 遍历 countMap 中的每个键值对。
      • std::cout << it->first << ' ' << it->second << std::endl;: 输出键值对,即自然数和其出现次数,用空格隔开。

代码功能:

  • 读取输入的 n 个自然数。
  • 使用 map 统计每个自然数出现的次数。
  • 按照从小到大的顺序输出每个自然数及其出现次数。

注意:

  • 此代码适用于自然数范围不超过 1500000000 的情况。
  • 如果自然数数量很大,可以使用更节省内存的数据结构,例如 unordered_map
  • 可以根据需要调整输出格式。
C++ 统计自然数出现次数并排序输出

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

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