首页 > 学院 > 开发设计 > 正文

算法训练 出现次数最多的整数

2019-11-11 04:59:41
字体:
来源:转载
供稿:网友
算法训练 出现次数最多的整数  时间限制:1.0s   内存限制:512.0MB      问题描述  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。  输入格式:第一行是一个整数NN £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。  输出格式:输出只有一行,即出现次数最多的那个元素值。输入输出样例样例输入5100150150200250样例输出150

思路:考虑到范围大小,用map来做比较方便

特殊判断一下整数N小于等于0的情况,不做输出

代码:

#include<iostream>#include<map>#include<string>#include<algorithm>using namespace std;const int MAXN=1005;map<string,int> ans;int main(){    int n;    string s;    scanf("%d",&n);    if(n<=0)        return 0;    for(int i=1;i<=n;i++)    {        cin>>s;        map<string,int>::iterator it;        it=ans.find(s);        if(it!=ans.end())        {            for(it=ans.begin();it!=ans.end();it++)            {                if(it->first==s)                {                    it->second++;                    break;                }            }        }        else        {            ans.insert(make_pair(s,1));        }    }    map<string,int>::iterator it;    int cnt=-1;    string ss;    for(it=ans.begin();it!=ans.end();it++)    {        if(it->second>cnt)        {             ss=it->first;             cnt=it->second;        }    }    cout<<ss<<endl;    return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表