问题描述
  给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
输入格式
  输入的第一行包含一个整数n,表示给定数字的个数。
  第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
  输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。
样例输入
12
5 2 3 3 1 3 4 2 5 2 3 5
样例输出
3 4
2 3
5 3
1 1
4 1
评测用例规模与约定
  1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。

用 map 统计每个数出现的次数,map 实际会对每一个 key 值进行排序,但这不是我们需要的。

题目要求是按照 value 值从大到小进行排序并输出,这里使用 vector 作为转换,对 vector 进行排序,然后输出。

由于临近考试 CCF 判定系统崩了,暂时还没有分数结果

#include<bits/stdc++.h>
using namespace std;map<int,int> num; struct cmpByValue{bool operator()(const pair<int,int>& l, const pair<int,int>& r) {if(l.second != r.second) {return l.second > r.second;}return l.first < r.first;}
};int main() {int n,a;cin >> n;for(int i=0;i<n;i++) {cin >> a;num[a]++;}vector<pair<int,int> > ans(num.begin(),num.end());sort(ans.begin(),ans.end(),cmpByValue());for(int i=0;i!=ans.size();i++) {cout << ans[i].first << " " <<ans[i].second <<endl;}return 0;
}

下面说下常规思路,用数组记录下数字出现的次数(下标为数字,元素为出现的次数)

再按照出现次数从大到小输出,最大出现次数为1000次,依次遍历找到元素出现次数刚好等于i的数字,输出下标和元素。

#include<bits/stdc++.h>
using namespace std;int main() {int a[1002];int n,num;int i,j;memset(a,0,sizeof(int)*1002);cin >> n;for (i=0;i<n;i++){cin >> num;a[num]++;}for (i=1000;i>0;i--) {for (j=0;j<1001;j++) {if (a[j] == i) {cout << j << " " << a[j] << endl;break;}}}return 0;
}

CCF 201503-2 数字排序相关推荐

  1. CCF认证-2015-3-2 数字排序

    思路:这个题用map+vector直接到位了:使用map将各个pair(first放值,second放出现次数)存入,然后将map中所有元素传入vector中,对vector按要求排序输出即可: no ...

  2. *6-1 CCF 2015-03-2 数字排序

    数字排序 题目描述 源代码 关于这题 题目描述 源代码 #include<iostream> #include<cstring> #include<vector> ...

  3. mysql将字符串字段转为数字排序或比大小

    SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...

  4. BitSet 数字排序

    2019独角兽企业重金招聘Python工程师标准>>> BitSet 数字排序 博客分类: java package tree2; import java.util.BitSet;p ...

  5. 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序

    1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...

  6. Mysql字符串截取 mysql将字符串字段转为数字排序或比大小

    SELECT * FROM Student WHERE 1 = 1 ORDER BY -ID DESC ; SELECT * FROM Student WHERE 1 = 1 ORDER BY (ID ...

  7. LeetCode 2191. 将杂乱无章的数字排序(自定义排序)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 mapping ,它表示一个十进制数的映射规则,mapping[i] = j 表示这个规则下将数位 i 映射为数位 j ...

  8. 生活中c语言排序案例,C语言之数字排序-基于冒泡排序法的一些案例(对未知数量的数字进行排序)...

    C语言之数字排序 在学习C语言的时候遇到了几个比较基础的排序问题,又结合了之前的处理方法.觉得在这个需要再系统地进行复习一下. 当我们在初学C语言的时候,我们都会结合三个数字的排序来理解计算机处理问题 ...

  9. 基于Hadoop 2.6.0运行数字排序的计算

    上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...

  10. CCF201503-2 数字排序

    问题描述: 试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺 ...

最新文章

  1. 【2021年度训练联盟热身训练赛第二场】Binarize It(python)
  2. 30个流行的jQuery Plugins
  3. 清华大学冯珺:基于强化学习的关系抽取和文本分类 | 实录·PhD Talk
  4. 怎么博客圆的文章越来越杂?
  5. mysql查询语句ppt,mysql查询表中数据总条数的语句怎么写
  6. Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j
  7. 完整美团饿了么外卖红包源码
  8. 如何完美的卸载Office2007?
  9. 奥克兰大学计算机专业好找工作吗,留学选择奥克兰大学的计算机专业肯定不会后悔...
  10. 作为程序员上班的第一天
  11. 华为mate50os鸿蒙,华为Mate50将如期发布,屏下镜头+鸿蒙OS,再见iPhone12
  12. 天津发票版本文件服务器端口,天津增值税发票综合服务平台入口
  13. python儿童编程培训
  14. 揭秘诈骗团伙通过裸聊软件实施敲诈勒索
  15. 写需求规格说明书/产品定义的个人总结
  16. 最简单的讲解:梯度下降法
  17. Hadoop百度百科
  18. java subject类_RxJava 常见误区(一):过度使用 Subject
  19. 【ROS】官方tf教程turtle_tf2源码原理解读
  20. Linux命令行下删除文件内容

热门文章

  1. redis——redis主从复制
  2. 反应器(Reactor):用于事件多路分离和分派的体系结构模式
  3. Spring-AOP概念及使用教程
  4. LeetCode 345. Reverse Vowels of a String
  5. 【C++ STL学习之七】STL算法之find和find_if
  6. 草稿 断开式绑定combobox 1128
  7. django-模型类管理器-create方法-models属性
  8. javascript-运算符
  9. 输入网址后到网页显示出来会发生什么?
  10. 将海量文件用split切割清单,并逐一处理