计算输入流

时间:2018-02-01 08:08:05

标签: c++ loops counting

我是一名正在学习编程的大学生。给我们的一个问题陈述是:

用户输入一个整数n,后跟n个不同的整数。不使用数组或字符串,找到输入流中出现次数最多的数字。

我们需要使用simplecpp包,它比标准的c ++更简单。例如,我们编写repeat(n)来获得具有n次迭代的for循环。

我该怎么做才能解决问题?。

我想过创建一个像

这样的数字
10101010[number]10101010[number2]...

存储输入然后拆分但这无法解决问题。 我们不允许使用while循环或字符串操作之类的东西来解决问题。我能想到的唯一解决方案是使用字符串方法然后操纵字符串但显然不允许。 有什么方法可以做到这一点以及输入无法存储在数组中的其他问题吗?

1 个答案:

答案 0 :(得分:0)

假设您被允许使用普通的流媒体和其他std::标题,这些标题并非特别禁止

#include <iostream>
#include <map>
#include <algorithm>

using counter = std::map<int, int>;
using element = std::map<int, int>::const_reference;

bool compare_second(element lhs, element rhs)
{
    return lhs.second < rhs.second;
}

int main()
{
    counter data;
    int n = 0;
    std::cin >> n;
    for (int i = 0; i < n; ++i)
    {
        int current = 0;
        std::cin >> current;
        data[current]++;
    }

    if (n > 1)
    {
        std::cout << std::max_element(data.begin(), data.end(), compare_second)->second;
    }

    return 0;
}