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

Поиск последовательности элементов максимальной длины в массиве - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа по моделированию http://www.cyberforum.ru/cpp-beginners/thread754177.html
Буду очень признателен кто поможет.:thank_you: 1) Выписать математическую модель, определить состав набора входных параметров и их конкретные числовые значения. 2) Спроектировать пользовательский интерфейс программы моделирования, обращая особое внимание на формы представления результатов. 3) Разработать программу для решения модели с заданной точностью. 4) Произвести отладку и тестирование...
C++ передача параметра привет всем ! вот код #include <iostream> using namespace std; struct book { char title; char authors; char publishing_house; http://www.cyberforum.ru/cpp-beginners/thread754174.html
Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом C++
Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом.
Работа с файлами. Определить порядковый номер байта, начиная с которого располагается первая по алфавиту фамилия... C++
Доброго времени суток, форумчане! Назрела проблема насчет работы с файлами в с++. Задание следующее, в файле записаны фамилии, переносы допускаются, определить порядковый номер байта, начиная с которого располагается первая по алфавиту фамилия. Заменить данную фамилию в исходном файле *, НЕ переписывая этого файла. Я набрасал начальный код, просто для считывания из файла и примерно представляю,...
C++ Матрицы. Найти ее ранг и средние значения по столбцам (дописать код) http://www.cyberforum.ru/cpp-beginners/thread754141.html
пункт 1. С клавиатуры задается матрица размером 5 * 5. Найти ее ранг и средние значения по столбцам. пункт 2. Из найденных закругленных значений создать множество В и найти дополнение к множеству В . пункт 1 я сделал и закруглил найденные значения, но не знаю как создать множество и найти к нему дополнение... помогите кто ни будь =) Добавлено через 6 минут вот сам код...
C++ Засорение памяти Добрый день, так как я еще школьник и знаю очень мало, прошу не ругать. Написанная мной программа если запускать ее снова и снова(поставить goto в конце) начинает жрать все больше и больше оперативной памяти. Как это исправить? Это началось после добавления ф-ии put. Вот код:// Otd.cpp: ���������� ����� ����� // ��� ����������� ����������. // #include "stdafx.h" #include<iostream>... подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
07.01.2013, 03:58     Поиск последовательности элементов максимальной длины в массиве
Вот мой алгоритм поиска:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <iterator>
#include <algorithm>
#include <array>
 
int main()
{
    std::array<int, 16> firstAr =  {7, 4, 9, 6, 7, 1, 2, 4, 5, 6, 1, 5, 2, 8, 9, 0};
    std::array<int, 11> secondAr = {         1, 2, 8, 4, 9, 6, 7, 1,       8, 9, 0};
 
    auto find_pos = firstAr.begin();  //позиция поиска
    auto find_mismatch = std::make_pair(firstAr.begin(), secondAr.begin()); //пара итератовов где элементы несходятся
    auto mynumber = std::make_pair(secondAr.begin(), secondAr.begin());     //пара двух итераторов на на нашу ищуюся последовательность элементов
    unsigned count = 0; //количество наибольших совпадений элементов
 
    for (auto it = secondAr.begin(); it != secondAr.end(); ++it)
    {
        while (find_pos != firstAr.end())
        {
            find_pos = std::find(find_mismatch.first, firstAr.end(), *it);  //найти позицию первого и остальных вхождений елемента *it массива secondAr в массиве firstAr
            if (find_pos != firstAr.end())
            {
                find_mismatch = std::mismatch(find_pos, firstAr.end(), it);  //найти первое несовпадение последовательностей элементов
                if (std::distance(it, find_mismatch.second) > count)
                {
                    mynumber = std::make_pair(it, find_mismatch.second);           //запомнить наибольшею последовательность совпадающих элементов
                    count = std::distance(it, find_mismatch.second);             //обновить количество наибольших совпадений элементов
                }
            }
        }
        find_mismatch.first = firstAr.begin();
        find_pos = firstAr.begin();
    }
 
    std::copy(mynumber.first, mynumber.second, std::ostream_iterator<int>(std::cout," "));
 
    std::cout<<"\n";
    system("pause");
    return 0;
}
 
Текущее время: 07:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru