如何找到整数个数的最大频率?

时间:2016-10-27 19:38:51

标签: c++

这是我到目前为止的代码:

 #include <iostream>

    #define MAX(X,Y) ((X) > (Y) ? (X):(Y))

    int frequency(int n);

    int main()
    {
        int x;

        std::cout << "Please enter a sequence of numbers."
            << std::endl;
                std::cin >> x;

        std::cout << "The max frequency of " << x << " is "
              << frequency(x)
                << std::endl;

        return 0;
    }

    int frequency(int n)
    {
        int A[10] = {0}, rem;

        while (n != 0)
        {
            int rem = (n % 10);
            A[rem] += 1;
            n = (n / 10);
            std::cout << rem <<  '\t' << n
                << std::endl;
        }
        //MAX(A[rem], n);
    }

如何修改它以便打印出用户指定的整数中出现次数最多的数字?

1 个答案:

答案 0 :(得分:1)

只需跟踪循环中的最大值:

    int A[10] = {};
    int max = 0;
    while (n != 0)
    {
        int rem = n % 10;
        ++A[rem];
        n /= 10;
        if( max == rem or A[max] > A[rem] )
            continue;
        if( A[rem] > A[max] or rem > max )
            max = rem;  
    }
    return max;

请注意,您与数组一起创建另一个rem,因为您不使用它,最好将其删除。

注2:没有错:

 A[rem] += 1;
 n = ( n / 10 );

它可以在C ++中很快表达出来,如我的代码所示。