Функция для возврата количества повторяющихся чисел в отсортированном массиве

Я хочу вернуть количество повторяющихся значений в отсортированном массиве.

Например: 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;
}

0

Решение

У вас есть ошибка в этой строке:

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

Чек должен быть по индексу c не в l, Помимо этого, ваш код мне кажется нормальным.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector