题目描述
输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从小到大输出。
任务1:分数均为不超过100的非负整数。
输入
第一行正整数n,不超过10000;
第二行n个不超过100的非负整数。
输出
多行,出现次数最多的分数和次数,有多个分数出现次数相同时,从小到大输出,一行一个。
样例输入
复制
10
89 98 99 89 99 76 87 88 86 77
样例输出
复制
89 2
99 2
提示
方法一:读数到数组中,排序后相等的数挨在一起,统计相同的数出现的次数(需另开数组存储),找出次数最多的输出。
方法二:由数据为不超过100的非负整数,范围为0~100,开101的数组;读入整数后,对应数组下标,每出现一次加1,最后查找次数最多的输出。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[10001];
int main()
{
int n,t;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(int i=0;i<n;i++)
{
if(a[i]==a[i+1])
{
int cnt=0;
cnt=cnt+2;
cout<<a[i]<<" "<<cnt<<endl;
}
}
return 0;
}
447

被折叠的 条评论
为什么被折叠?



