众数求c++程序 - 爱问答

(爱问答)

众数求c++程序

由文件给出 N 个 1 到 30000 间无序数正整数,其中 1≤N≤10000,同一个正整数可能会出现多次,出现次数最多的整数称为众数。求出它的众数及它出现的次数。

输入

输入文件第一行是正整数的个数 N,第二行开始为 N 个正整数。

输出

输出文件有若干行,每行两个数,第 1 个是众数,第 2 个是众数出现的次数。

样例输入

12
2 4 2 3 2 5 3 7 2 3 4 3

样例输出

2 4
3 4


我用vector的实现(程序复杂了点,结果正确)

#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;
struct DATA
{
   int num;
   int count;
} ;
typedef vector <DATA> V_DATA;

class data_finder
{
   public:
       data_finder(const int val):m_data(val) {}
       bool operator ()(const V_DATA::value_type &value)
       {
           return value.num == m_data;
       }
   private:
       int m_data;
};

int main()
{
   int d,i,n;
   DATA t_d;
   V_DATA data;
   V_DATA::iterator it=data.end();
   cin>>n;
   for(i=0; i<n; i++)
       {
           cin >> d;
           t_d.count=1;
           t_d.num=d;
           it=find_if(data.begin(),data.end(),data_finder(d));
           if (it == data.end())
               data.push_back(t_d);
           else
               {
                   it->count++;
                   t_d.count=it->count;
               }
         
       }


   int max_ct=0;
   for(it = data.begin(); it !=data.end(); it++ )
       {
           if (it->count>max_ct)
               max_ct=it->count;
       }
   for(it = data.begin(); it !=data.end(); it++ )
       {
           if (it->count==max_ct)
               cout <<  it->num <<" " << max_ct <<endl;
       }
   return 0;
}


下一篇:c语言的ofstream能不能一次创建多个不重名的文件?要代码简单些的,蟹蟹!

上一篇:200-600mmF5.6-6.3GOSS镜头配SEL20TC增距镜能实现自动对焦吗?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?