题目描述
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
题目解析
通过两个数组,一个数组存放整形序列,另一个数列储存他们出现次数,要判断一下这个数字是否在前面出现过,具体做法在下面代码中有注释
#include<stdio.h>
int main()
{
int N,i,z,h,m,p,max,j;
scanf("%d",&N);
int s[1000]={0},k[1000]={0}; /*定义两个数组,并初始化*/
for(i=0;i<N;i++)
scanf("%d",&s[i]);
for(i=0;i<N;i++)
{
m=0;
for(h=0;h<i;h++)
{
if(s[h]==s[i]) /*判断这个数是否与之前的数重复*/
{
m=1;
break;
}
}
if(m==0)
{
for(p=0;p<N;p++) /*若不重复统计在序列中出现次数并记录在另一个数组中*/
{
if(s[p]==s[i])
{
k[i]++;
}
}
}
}
max=k[0];
for(j=0;j<N;j++)
{
if(k[j]>max) max=k[j]; /*找出出现次数最多的元素,并输出*/
}
for(j=0;j<N;j++)
{
if(k[j]==max)
break;
}
printf("%d %d",s[j],max);
return 0;
}