华农校赛warmup1

      几个月没做题了.qsort的cmp函数都忘得差不多了,翻回原来的笔记,瞟了一下,改了又改,费了好大劲才ac着到简单题...贴出来留念一下..找到工作后的第一次热身赛.....

Problem D:统计数字

Time Limit:1000MS  Memory Limit:65536K
Total Submit:59 Accepted:24

Language: not limited

Description

由键盘给出n个1至1000之间的数字,统计各种数值出现的次数,输出出现次数由多到少排前5位的数值及其出现的次数(如果有多个数值出现的次数相同,则数值小的优先输出)

Input

输入第一个数值为给出的数值个数n(n在20到10000之间,即最多会有10000个数值需统计),此后为n个数值

Output

输出5行,每行有两个数,由一个空格隔开,前一个为数值,后一个为出现的次数。

Sample Input

 

Sample Output

 

 

5 3
6 2
8 2
1 1
2 1

 

20
1 2 3 4 5 6 7 8 9 10 11 5 6 12 5 8 13 14 15 16
 
#include<cstdio> 
#include<cstdlib>
 typedef struct 
{ 
int num; int count; 
}
nu;
 int num; 
int top; 
nu nuuu[10001];
 int nuu[1001];
 int cmp(const void *a,const void *b) 
{ 
if(((nu*)b)->count!=((nu*)a)->count) 
return ((nu*)b)->count-((nu*)a)->count;
 else return ((nu*)a)->num-((nu*)b)->num; 
} 
int main()
{ 
int temp,i; 
//freopen("1.in","r",stdin); 
scanf("%d",&num);
 for(i=0;i<num;i++) 
{
 scanf("%d",&temp);
 nuu[temp]++;
 } 
top=0;
 for(i=0;i<1001;i++) 
{ 
if(nuu[i])
 nuuu[top].num=i,nuuu[top++].count=nuu[i];
 } 
qsort(nuuu,top,sizeof(nu),cmp);
 for(i=0;i<5;i++)
 printf("%d %d/n",nuuu[i].num,nuuu[i].count);
 return 0;
 } 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值