C++ 统计自然数出现次数并排序输出
#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;
}
代码解释:
-
头文件:
iostream:用于标准输入输出流,例如cin和coutmap:用于创建键值对映射,方便统计不同数字出现的次数。
-
主函数:
int n;: 定义变量n存储输入的自然数个数std::cin >> n;: 从标准输入读取n的值std::map<int, int> countMap;: 创建一个名为countMap的map,用于存储每个自然数和其出现次数。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。 - 可以根据需要调整输出格式。
原文地址: https://www.cveoy.top/t/topic/qnlf 著作权归作者所有。请勿转载和采集!