EOJ 2994 数组排序 C++

该博客详细介绍了如何使用C++解决EOJ 2994数组排序问题。博主通过输入数组,计算每个元素的出现次数,找出出现次数最多且按数值大小排列的元素,并提供了解题思路和完整代码。
摘要由CSDN通过智能技术生成

写在前面:

测试样例刚过,车就到站了,,和上海持续的阴雨天气不同,济南还是一如既往的大晴天,啊我爱这干燥又温暖的春末夏初~ 吃完饭提交代码,一遍AC,爽!

题目:

  1. 数组排序

单点时限: 2.0 sec
内存限制: 256 MB
给定一个长度为 N 的整数数组,按如下规则排序并输出。首先,输出重复出现次数最多的元素;出现次数相同时,按元素值由小到大输出。例如对于数组 1 2 3 3 4 2 3 1 5 7 排序后输出 3 3 3 1 1 2 2 4 5 7。

输入格式
第 1 行:一个整数 T(1≤T≤10)为问题数。

对于每组测试数据:

第 1行是一个正整数:数组长度 N(1<N<2000);

第 2 行有 N 个整数:分别为第 1 至第 N个元素的值 a1,a2,⋯,an(∀i,0≤ai<500)。任意两个整数之间由一个空格分开。

输出格式
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等)。

然后在一行中输出排序后的数组元素,每两个整数之间由一个空格分开,最后一个整数后面没有空格。

样例
input

3
10
9 6 3 10 3 10 6 4 3 4
10
10 9 8 7 6 5 4 3 2 1
20
4 3 7 8 6 5 8 4 2 2 7 9 5 9 6 8 6 6 3 10
output
case #0:
3 3 3 4 4 6 6 10 10 9
case #1:
1 2 3 4 5 6 7 8 9 10
case #2:
6 6 6 6 8 8 8 2 2 3 3 4 4 5 5 7 7 9 9 10

思路:

每个case中:
变量设置:

  • len 即将输入的数的个数
  • num[len] 存输入的数;
  • times[500],times[i] 代表num中数字 i 出现的次数(因为num中的数介于0 ~ 499)(记得初始化);

解题:

  • 一个len次循环,完成num[len]和times[500]的数据输入,(即完成这组数的输入,并统计数字0~499出现的次数);
  • 找到times[500]中最大元素times[i]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值