1123 最佳校友

题目来源:
https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1123
Description
北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。  
Input
输入若干个整数,表示签到簿上的校友编号,所有编号均为0~99的整数,以一个负数作为输入结束的标志。
Output
输出出现次数最多的编号。若获奖选手有多个,则按从小到大的顺序输出选手编号,用空格隔开。
Sample Input
4 5 3 1 3 4 2 7 -1
Sample Output
3 4
题意描述:
输入若干个校友编号
计算并输出出现次数最多的那个编号,若不唯一,则从小到大排列输出,中间用空格隔开
解题思路:
运用桶排序,找出出现次数最多的那一个,最后再遍历数组找出相同次数的编号输出即可
程序代码:

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main()
 4 {
 5     int x,a[1100],count,max,flag,i,n;
 6     memset(a,0,sizeof(a));
 7     while(scanf("%d",&x),x>=0)
 8     {
 9         a[x] += 1;
10     }
11     for(max=0,i=0;i<1000;i++)
12     {
13         if(a[i])
14         {
15             //printf("a[%d]=%d\n",i,a[i]);
16             if(a[i]>max)
17             max=a[i];    
18         }
19     }
20     for(flag=0,i=0;i<1000;i++)
21     {
22         if(a[i]==max)
23         {
24             if(flag)
25                 printf(" %d",i);
26             else
27             {
28                 flag=1;
29                 printf("%d",i);
30             }    
31         }
32     }
33     printf("\n");
34     return 0;
35 }

 

转载于:https://www.cnblogs.com/wenzhixin/p/6793176.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值