Форум программистов, компьютерный форум CyberForum.ru

Функция поиска самой длинной цепочки элементов массива - C++

Восстановить пароль Регистрация
 
dgyda
56 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 36
27.03.2014, 15:15     Функция поиска самой длинной цепочки элементов массива #1
Доброго времени суток форумчане!
Препод взвалил непосильную на данный момент для меня задачку, с которой у меня возникли проблемы из за не знания алгоритма ее решения. Суть задачки проста: есть линейный массив, в котором в различном порядке идут цифры, необходимо вычислить цепочки повторяющихся элементов, точнее те которые по количеству самые большие, например:
входные данные 1,5,2,2,3,3,3,1,15,9,9,9,9
вывод: в данном ряде чаще всего повторяется число 9, в количестве 4 штук.
думал через switch но написав такую псевдо программу понял что не попрет: препод может ввести 15,15,15,15,
а это уже число а не цифра... уже не попрет... подскажите чем здесь можно воспользоваться?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 15:15     Функция поиска самой длинной цепочки элементов массива
Посмотрите здесь:

Написать функцию для нахождения самой длинной последовательности подряд идущих элементов массива,равных какому-либо заданному C++
Нахождение самой длинной цепочки отрицательных элементов с использованием указателей C++
C++ Переделать функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки и воспроизводила ее
C++ Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве)
Определить длину самой длинной цепочки единиц в переменной unsigned long a; C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
malfoi
 Аватар для malfoi
50 / 50 / 15
Регистрация: 17.12.2013
Сообщений: 334
27.03.2014, 18:45     Функция поиска самой длинной цепочки элементов массива #2
считать количество, подряд идущей, первой цифры и хранить ее значение
каждый раз сравнивать со следующей цифрой и прибавлять к счётчику единицу, если она не изменилась, иначе начать считать новую последовательность и сравнивать ее с максимальной
dgyda
56 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 36
28.03.2014, 11:30  [ТС]     Функция поиска самой длинной цепочки элементов массива #3
что здесь не так? вроде по вашему алгоритму написал...
C++
1
2
3
4
5
6
7
8
9
int m[]={1,6,3,4,4,4,4,4,1,1,8,8,8,949,9};
    int i,j,k=0,per,max=0;
 
    for (i=0;i<16;i++) 
    {
        if(m[i]==m[i+1]) {k+=1;per=m[i];}  else {  max=k;
            if (m[i+1]==m[i+2]) {k+=1;per=m[i+1];}}
        if (max<k) max=k;
    }
malfoi
 Аватар для malfoi
50 / 50 / 15
Регистрация: 17.12.2013
Сообщений: 334
28.03.2014, 15:13     Функция поиска самой длинной цепочки элементов массива #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
должно получится что-то вроде этого:
мы проходим по массиву по массиву и сравниваем каждое число с последующим
если они равны, к счётчику прибавляем единицу и и сохраняем значение максимальной переменной
проверяем больше ли число таких чисел чем предыдущая последовательность, если да то сохраняем данные максимальной последовательности
если числа не равны, сбрасываем счётчик счётчик

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
 
int main()
{
     int m[] = {1,6,3,4,4,4,4,4,1,1,8,8,8,949,9};
     int k = 0, per = -1, kper;
     int max = 1;
 
 
     for (int i = 0; i < 14; i++) {
        if (m[i] == m[i + 1]) {
            k++;
            kper = m[i];
        }
        if (k > max) {
            max = k;
            per = kper;
        }
        if (m[i] != m[i + 1])
            k = 1;
     }
    std::cout << max << " " << per << std::endl;
 
    return 0;
}
Yandex
Объявления
28.03.2014, 15:13     Функция поиска самой длинной цепочки элементов массива
Ответ Создать тему
Опции темы

Текущее время: 12:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru