作业帮 > 综合 > 作业

C语言数据频率问题: 输入格式: 输入有多组数据. 每组数据两行. 第一行包含一个正整数n(小于等

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 04:44:23
C语言数据频率问题: 输入格式: 输入有多组数据. 每组数据两行. 第一行包含一个正整数n(小于等
C语言数据频率问题:
输入格式:
输入有多组数据.
每组数据两行.
第一行包含一个正整数n(小于等于10000),代表会员人数.
第二行包含n个正整数(小于等于10000),代表各会员AC的题数.
输出:
对应每组数据,如果超过一半的会员AC的题数相同,则输出这个题数,否则输出0.
样例输入:
7
14 36 14 14 14 3 8
10
56 56 56 56 3 35 35 8 77 56
样例输出:
14
0
这道题我已经做出来了,我的基本想法就是拿出一个数来与全部数字逐个比较,碰见相同的就执行k++来记录相同数的个数,语言一个for循环嵌套一个for循环,但是这样很耗时间,因为如果有10000个互不相同的数,那一共需要循环一亿次,现在我想找高手帮写个效率高的程序.谢谢各路大神!
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"

void main( ){
int *count;
int n, a[10000], i, Max = -1, max;/*Max为最大AC题号,max指向最多的重复的题号,a存储各AC题号,n表示AC会员人数*/
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &a[i]);
if(a[i] > Max) Max = a[i];
}
count = (int*) malloc ((Max + 1) * sizeof(int));
for(i = 0; i = (n / 2 + 1))
printf("%d\n", max);
else printf("0\n");
free(count);
}