贪心法 第4关:找到出现次数最多的数

任务描述
本关任务:给定 n 个正整数,编写一个实验程序找出它们中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。

编程要求
请在右侧编辑器Begin-End处补充代码,完成本关任务。

测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:

6 //给定6(n)个正整数
10 //此行及以下为具体的每个数据
1
10
20
30
20
预期输出:出现次数最多的且最小的数为10

#include <stdio.h>
using namespace std;
#include<algorithm>

/**********  Begin  **********/

int find(int n,int * a)
{
    int maxn=0,bestd,num=1,i=1;
    sort(a,a+n);
    int pred=a[0];
    while(i<n)
    {
        while(i<n&&a[i]==pred)
        {
            num++;
            i++;
        }
        if(num>maxn)
        {
            bestd=pred;
            maxn=num;
        }
        pred=a[i];
        num=1;
        i++;
    }
    return bestd;
}
int main()
{
    int n,bestd,i;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    bestd=find(n,a);
    printf("出现次数最多的且最小的数为%d\n",bestd);
    return 0;
}
/**********  End  **********/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值