引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象。

  • 问题描述

  给定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的非负整数。

  • 源代码

# include <stdio.h>

# include <stdlib.h>

# include <memory.h>

# include <algorithm>

using namespace std;

struct group {

int num; //数字

int times; //出现的次数

};

//比较函数

bool cmp(group a, group b)

{

if (a.times == b.times)

{

return a.num < b.num;

}

return a.times > b.times;

}

int main(void)

{

int n; //数字个数

scanf("%d", &n);

group *pInput = (group *)malloc(sizeof(group) * n);

//初始化输入数组

for (int i = 0; i < n; i++)

{

pInput[i].num = -1;

pInput[i].times = 0;

}

int length = 0;

for (int i = 0; i < n; i++)

{

int tempNum;

scanf("%d", &tempNum);

int j = 0;

int sign = 1;

while (j < length)

{

//如果输入的数字已经存在,直接在time上+1

if (tempNum == pInput[j].num)

{

pInput[j].times += 1;

sign = 0;

break;

}

j++;

}

if (sign)

{

//如果输入的数字不存在,令num = tmepNum

pInput[length].num = tempNum;

pInput[length].times = 1;

length += 1;

}

}

sort(pInput, pInput + length, cmp);

for (int i = 0; i < length; i++)

{

printf("%d ", pInput[i].num);

printf("%d\n", pInput[i].times);

}

free(pInput);

return 0;

}

CSP201503-2:数字排序的更多相关文章

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

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

  2. CCF系列之数字排序(201503-2)

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

  3. SQL SERVER 字符串按数字排序

    需求是这样的: 数据库表里面有一个字段类型是nvachar,存的值是数字和字符混合的,要实现先按数字排序,再按字母倒序. 思路: 考虑这个字段的值是否是有规律可循的,把要按数字排序的部分转换为数字,再 ...

  4. CCF CSP 201503-2 数字排序 (map+自定义排序)

    题目链接:http://118.190.20.162/view.page?gpid=T26 返回试题列表 问题描述 试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: ...

  5. JavaScript按纯数字排序

      直接上代码: var arr=[ {name:"张散步",age:"23",sports:"篮球",number:"23112 ...

  6. php冒泡排序实现方法,传入几个数字排序后 输出实战例子

    php冒泡排序实现方法,传入几个数字排序后 输出实战例子 算法和数据结构是一个编程工作人员的内功.四种入门级排序算法: 冒泡排序.选择排序.插入排序.快速排序. 一.冒泡排序 原理:对一组数据,比较相 ...

  7. CCF CSP 201503-2 数字排序

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-2 数字排序 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到 ...

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

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

  9. sort()函数到底是怎样进行数字排序的

    很多人会用sort(),并不见得知道它具体是怎样给数字排序的.其实不知道也行,会用就可以,感兴趣的可以来看看. var numberArray = [2,4,1,3]; numberArray.sor ...

  10. CCF201503-2 数字排序 java(100分)

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

随机推荐

  1. AltiumDesigner16笔记

    集成库(*.intlib)没有办法直接修改库文件,但是*.schlib可以编辑的. 原理图元件批量修改可以从Tools-> Update from libraries进行. PCB封装批量修改: ...

  2. oracle sqldrl命令与以及ctl文件

    具体操作如下: 第一步:先编辑好数据控制文件 xx.ctl,如test.ctl options(skip=1)   --跳过第一行(看实际情况) load data infile 'C:\Users\ ...

  3. python初学者日记01(字符串操作方法)

    时间:2018/12/16 作者:永远的码农(博客园) 环境: win10,pycharm2018,python3.7.1 1.1  基础操作(交互输入输出) input = input(" ...

  4. MFC+ODBC+SQL Server+Visual C++

    利用SQL Server 和MFC实现对数据库的简单管理 工具:SQL Server,VC6.0 步骤如下: 1.建立一个数据库studentinfo,再建立一个表testtable,表设计和初始值如 ...

  5. 写shell脚本需要注意哪些地方----零基础必看

    shell脚本是完全靠自学的,每一步需要注意的问题都是我自己亲自实践出来的,对于大神可能看来是小儿科,但是对于新手,是必须注意的 一.首先执行 echo $SHELL查看本机的解释器, 二.开始写脚本 ...

  6. 关于CoreLocation定位服务的简单使用

    在我们发微博,发表空间内容,以及在朋友圈发表动态的时候,会发现有一个位置信息的控件.iOS中是如何定位我们的位置信息的呢?基于此写一个小Demo,供大家参考使用. 在iOS中,用于定位时需要我们导入以 ...

  7. git 完善使用中

    GIT 版本库控制: 第一步:Git 的账号注册 url :https://github.com/ 这是git的官网如果第一次打开会这样 中间红色圈内是注册 内容, 第一项是用户名 第二项是邮箱 第三 ...

  8. 树莓派如何连接WIFI

    hello,大家好,我是叶秋! 上一期呢,给大家介绍了如何给树莓派安装系统,有细心的朋友就会发现上一期安装系统的文章漏了一点点知识,不知道机智的你是否有发现呢~~(尴尬

  9. Altium Designer常用快捷键

    一:Altium原理图快捷键:    Shift+左键选择    :实现多个目标选择    Ctrl+左键拖动    :保持连线拖动目标        Shift+c       :清除当前过滤(?? ...

  10. Python习题(分页显示)

    class Page: def __init__(self, lst, pageSize): self.lst = lst # 数据 self.pageSize = pageSize # 每页显示多少 ...