c++ - 返回排序数组中重复数字计数的函数

标签 c++ algorithm recursion divide-and-conquer

我想返回排序数组中重复值的数量。

例如:a = { 1, 1, 2, 3, 4, 4 },fratelli(n) 应该返回 2。(它们是 1, 1 和 4, 4)

我尝试使用递归方法,但它不起作用。它总是给我 4。

我想问是否有人可以帮助我更好地理解这种编程方法。非常感谢!

函数:

    #include <iostream>
    using namespace std;

    int fratelli(int a[], int l, int r)
    {
        if (l == r) return 0;
        else 
        {
            int c = (l+r) / 2;
            int n = fratelli(a, l, c) + fratelli(a, c+1, r);
            if (a[l] == a[l+1]) n++;
            return n;
        }

    }


    int main()
    {
        const int _N = 11;
        int array[_N] = { 1, 1, 2, 3, 5, 5, 7, 8, 8, 11, 12 };

        cout << "\n" << fratelli(array, 0, _N-1);


        return 0;
    } 

最佳答案

你在这行有一个错误:

if (a[l] == a[l+1]) n++;

检查应该在索引 c 而不是 l。除此之外,您的代码对我来说似乎还不错。

关于c++ - 返回排序数组中重复数字计数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17233609/

相关文章:

Bash 递归函数无法正确执行

algorithm - 编辑距离说明

帮助人类选择的算法(例如小猫 war )

optimization - void 返回类型函数的尾调用优化

c++ - 在使用 const 成员通过引用传递时尝试引用已删除的函数

C++:将 unsigned long long int 转换为 vector<char> ,反之亦然

c++ - 我如何将数据通过管道传输到 bzip2 并从其在 Linux 上的 C++ 中的标准输出中获取结果数据?

c++ - Qt 客户端发送一个结构数据来 boost asio 服务器

algorithm - 遗传算法在解决TSP时应该离多远

javascript - 返回此递归循环的累积字符串