问题描述:
给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
输入格式:
输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。
输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。
输出格式:
输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
#include<stdio.h>
int main(){
int n;
int a[1000][2],b[1000][2];
int count,sam;
int i,j,k=0;
scanf("%d",&n);
if(n<1||n>1000)return 0;
for(i=0;i<n;i++){
scanf("%d",&a[i][0]);
if(a[i][0]<1||a[i][0]>1000)return 0;
a[i][1]=0;
}
for(i=0;i<n;i++){
sam=a[i][0];
count=0;
for(j=0;j<n;j++){
if(sam==a[j][0]&&a[j][1]==0){
count++;
a[j][1]=1;
}
}
if(count!=0){
b[k][0]=a[i][0];
b[k][1]=count;
k++;
}
}
int max,max_i;
max=b[0][1];
max_i=0;
for(i=0;i<k;i++){
if(max<b[i][1]){
max=b[i][1];
max_i=i;
}
else if(max==b[i][1]){
if(b[max_i][0]>b[i][0]){
max=b[i][1];
max_i=i;
}
}
}
printf("%d",b[max_i][0]);
return 0;
}