ZC_Wang · 2019年09月25日

算法设计与分析C++众数与重数 非分治实现

总时间限制: 1000ms 内存限制: 1000kB
描述
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。对于给定的n个自然数组成的多重集S,计算S的众数及其重数 。

输入
输入集合大小n及n个数
输出
输出两行
第一行为众数
第二行为重数
样例输入
6
1 2 2 2 3 5
样例输出
2
3

#include<iostream>
using namespace std;
int main() 
{
    int i,j,n,same,max=-1;
    
    //输入
    int a[5000],b[5000];
    cin>>n;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    
        
    for(i=0;i<n;i++){
        b[i]=0;
    }


    //记录个数
    for(i=0;i<n;i++){
        for(j=0;j<n;j++){
            if(a[i]==a[j])
                b[i]++;
        }    
    }
    
    for(i=0;i<n;i++)
    {
        if(b[i]>max){
            max=b[i];
            same=a[i];
        }
            
        if(b[i]==max)
        {
            if(a[i]<a[max]){
                max=b[i];
                same=a[i];
            }        
        } 
    }
    cout<<same<<" "<<max;
    
    return 0;
} 
推荐阅读
关注数
0
文章数
18
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息