CCF201312-1 出现次数最多的数

CCF201312-1 出现次数最多的数_第1张图片1code 很简单的一个题目,不过还是做了好一会儿,看了海岛Blog大佬的博客受益颇深超级感谢,之前学的都还给老师了,哭都没时间,so 为了考研加把劲吧!

//201312-1 出现次数最多的数 如果出现次数相同则求出最小的那个 
#include
#include
//不加报错[Warning] incompatible implicit declaration of built-in function 'memset'
#define N 10000
int sicount[N+1];
int main()
{
    int n,v,i;
    //变量初始化 详解 https://blog.csdn.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即可,,,还没实现 暂时想到这儿

你可能感兴趣的:(C,学习心得)