给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。
- 第一题
离满分差十分,不知道哪里错了
#include<stdio.h>
int main(){
int n,a[10000]={0},t,maxp=0,max,i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&t);
a[t]++;
if(maxp<a[t]){
maxp=a[t];
max=t;
}
}
printf("%d",max);
return 0;
}
- 更新
对比一下大神的代码,发现可能是在找最大值时出现了问题。大神的最大值查找与统计进行了分离,而我的是放在了一起,不知道是不是这里错了,反正以后决定一个循环只干一件事,避免出错。
#include<stdio.h>
int main(){
int n,temp;
int a[10001]={0};
int i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&temp);
a[temp]=a[temp]+1;
}
int max=0,maxi;
for(i=0;i<=10000;i++){
if(a[i]>max){
max=a[i];
maxi=i;
}
}
printf("%d",maxi);
return 0;
}