CCF201312-1 出现次数最多的数
1code 很简单的一个题目,不过还是做了好一会儿,看了海岛Blog大佬的博客受益颇深超级感谢,之前学的都还给老师了,哭都没时间,so 为了考研加把劲吧!
//201312-1 出现次数最多的数 如果出现次数相同则求出最小的那个
#include <stdio.h>
#include <string.h>
//不加<string.h>报错[Warning] incompatible implicit declaration of built-in function 'memset'
#define N 10000
int sicount[N+1];
int main()
{
int n,v,i;
//变量初始化 详解 https://blog.****.net/qq_27522735/article/details/53374765
//memset函数原型 extern void *memset(void *buffer, int c, int count) 可方便的清空一个结构类型的变量或数组
//buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度.
//原型是memset(buffer, 0, sizeof(buffer)) char a[100];memset(a, '/0', sizeof(a));
memset(sicount,0,sizeof(sicount));
//统计输入的数据
scanf("%d",&n);
while(n--){
scanf("%d",&v);
sicount[v]++;
}
//找出出现次数最多的数
int ans,maxcount=0;
for(i=1;i<=N;i++){
if(sicount[i]>maxcount){
ans=i;// 此处i是多个数出现次数相同时,最小的那个数 ,否则是max
maxcount=sicount[i];
}
}
printf("%d\n",ans);
return 0;
//数组下标存储输入数字,数组里边存储出现次数,
//so数据已经按照从小到大排好序,代码中出现次数>已记录出现最大次数才会更改,而不是>=。sicount[i]>maxcount
//所以碰到出现次数相同的数时,直接过,已掌握。
忽然想到C#对出现次数直接调用sort方法,如果出现次数相同的有多个,append到另一个数组,输出min,否则输出max即可,,,还没实现 暂时想到这儿
}