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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Cmiki
0 / 0 / 0
Регистрация: 21.08.2016
Сообщений: 5
#1

Найти самую длинную последовательности чисел, упорядоченную по возрастанию - C++

21.08.2016, 14:11. Просмотров 323. Ответов 2
Метки нет (Все метки)

4. Найти самую длинную последовательности чисел, упорядоченную по возрастанию.
Пример: 5 7 8 9 3 0 4 6 8 9 3 4 3
На выходе: 0 4 6 8 9
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2016, 14:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти самую длинную последовательности чисел, упорядоченную по возрастанию (C++):

Найти самую длинную последовательность простых чисел - C++
Доброго времени суток! Помогите пожалуйста доделать программу. Нужно из массива цифр, выделить самую длинную последовательность простых...

Найти самую длинную возрастающую цепочку простых чисел - C++
Привет всем Решаю задачку: Найти самую длинную возрастающую цепочку простых чисел В заданном бинарном файле необходимо ...

Цикл: Найти самую длинную неубывающую цепочку чисел - C++
В цикле с клавиатуры вводится 15 целых чисел. Необходимо найти самую длинную неубывающую цепочку чисел. На экран вывести найденную...

найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Нужно найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. В чем ошибка ? #include <iostream> #include...

Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. Входные данные: В единственной строке...

Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц - C++
Здравствуйте, не могу понять в чём может быть ошибка :) Решаю олимпиадную задачу. Но система находит в тесте 5 не верный ответ) В...

2
Lexxxxy
5 / 5 / 4
Регистрация: 07.08.2016
Сообщений: 33
21.08.2016, 16:07 #2
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//Программа ищет самую длинную последовательности чисел, упорядоченную по возрастанию.
#include <iostream>
#include <Windows.h>
#include <ctime>
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int size = 0, buffer = 1, maxbuffer = 0, max = 0, minElement = 0, maxElement = 0;  //объявление переменных
 
    cout << "Введите количество элементов массива: "; cin >> size;   //создание динамического массива
    int *array = new int[size];
    array[size] = {};                                               //чистка мусора
 
    srand(time(NULL));                      //
    for (int i = 0; i < size; i++)          // Заполнение массива
    {                                       // рандомными числами
        array[i] = rand() % 9;              //
        cout << array[i] << " ";            //
    }
 
    for (int i = 0; i < size; i++)          //Сам алгоритм действий:
    {                                       //Программа сравнивает последующий элемент массива с нынешним
        if (array[i+1] > array[i])          //и если он больше, то прибавляется счётчик buffer - это нужно для того
        {                                   //чтобы можно было понять из скольких чисел состоит последовательность.
            buffer++;                       //Если последующее число меньше нынешнего, то запоминается максимальное
            max = buffer;                   //количество элементов последовательности, а также ищется максимальный элемент последовательности.
            if(maxbuffer < max)             //В первом и втором случае все действия одинаковы, исключения лишь в том, что
            {                               //в первом случае счётчик прибавляется, а во втором обнуляется(если быть точным, то становится
                maxbuffer = max;            //единицей).
                maxElement = i + 1;
            }
        }
        if (array[i+1] <= array[i])
        {
            max = buffer;
            if(maxbuffer < max)
            {
                maxbuffer = max;
                maxElement = i + 1;
            }
            buffer = 1;
        }                                 
 
    }
    cout << "\n\nМаксимальная последовательность: " << maxbuffer << endl << endl;
 
    minElement = (maxElement + 1) - maxbuffer;        //Высчитывается минимальный элемент последовательности. Из максимального элемента вычитается
                                                      //максимальное количество элементов последовательности.
 
    cout << "Саммая длинная последовательности чисел: ";
    for (int i = minElement; i <= maxElement; i++)
    {
        cout << array[i] << " ";                       //Ну и вывод получившегося массива.
    }
 
 
    delete[] array;
    cin.get();
    cin.get();
    return 0;
}
Всё описано в комментариях к коду, чтобы можно было лучше понять. Наверное, можно как-то легче. На большее не додумался.
0
lawr
367 / 261 / 124
Регистрация: 09.05.2014
Сообщений: 769
21.08.2016, 16:13 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
int main(){
    const int size = 13;
    int A[size] = { 5, 7, 8, 9, 3, 0, 4, 6, 8, 9, 3, 4, 3 };
    int start = 0, lenght = 1, max_start = 0, max_lenght = 0;
    for (int i = 0; i < size-1; i++)
    {
        if (A[i] < A[i + 1])
            lenght++;
        else{
            if (lenght>max_lenght)
                max_lenght = lenght, max_start = start;
            start = i + 1, lenght = 1;
        }
    }
    for (int i = max_start; i < max_start + max_lenght; i++)
        std::cout << A[i] << ' ';
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2016, 16:13
Привет! Вот еще темы с ответами:

Найти упорядоченную по возрастанию последовательность - C++
Не знаю как сделать следующее. Задан массив чисел a1,...,a50. Нужно найти упорядоченную по возрастанию последовательность (больше 5...

Найти самую длинную ленту - C++
Заданы две ленты найти самую длинную их совместную под ленту Буду благодарен

Найти самую длинную монотонную последовательность - C++
Добрый вечер. Помогите с задачей - Найти максимальную по длине монотонную ( либо неубывающую, либо невозрастающую) подпоследовательность....

Найти самую длинную неубывающую последовательность - C++
Дан список из n целых чисел a1, a2,..., a. Найти самую длинную неубывающую последовательность элементов списка


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru