7-58 求整数序列中出现次数最多的数(15 分)
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
思路:
- 首先要循环遍历找出数组中相同的元素,同时记下有几个相等的。
- 我定义了一个新的数组来存放出现的次数,最后遍历新的数组找出最大值即可。
- 经历过一轮循环的数字,再次遇到时不再进入循环。
代码:
#include <stdio.h>
int main(int argc,const char *argv[])
{
int n;
scanf("%d",&n);
int a[n];
int b[n];
for(int i=0;i<n;i++)//数组的初始化
{
scanf("%d",&a[i]);
b[i]=1;
}
for(int j=0;j<n;j++)
{
if(b[j]==1)//如果这个数字之前没有记录过
{
for(int k=j+1;k<n;k++)
{
if(a[j]==a[k])//出现相同的字母
{
b[j]++;
b[k]=b[j];
}
}
}
}
int cnt=b[0];
int max=a[0];
for(int kk=1;kk<n;kk++)
{
if(b[kk]>cnt)
{
cnt=b[kk];//找到最大的出现次数
max=a[kk];
}
}
printf("%d %d",max,cnt);
return 0;
}