Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
vvsibiri
0 / 0 / 0
Регистрация: 20.08.2016
Сообщений: 3
1

Найти в массиве самую длинную положительную последовательность

31.10.2016, 10:58. Просмотров 948. Ответов 1
Метки нет (Все метки)

Дан массив размера N найти в нем самую длинную положительную последовательность
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2016, 10:58
Ответы с готовыми решениями:

Найти в массиве самую длинную убывающую последовательность
Найти в массиве самую длинную убывающую последовательность , расположенную после максимального...

В массиве найти самую длинную монотонную последовательность
Последовательность a1,а2,...,аk называется монотонной, если а1<=a2<=...<=ak либо a1>=a2>=...>=ak. В...

Найти в целочисленном массиве самую длинную последовательность чётных по значению элементов
Добрый день! а) Найти в целочисленном массиве самую длинную последовательность чётных по значению...

Найти в массиве самую длинную убывающую последовательность, после максимального элемента
Найти в массиве самую длинную убывающую последовательность , расположенную после максимального...

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

1
afront
1193 / 1043 / 768
Регистрация: 29.02.2016
Сообщений: 3,316
31.10.2016, 13:22 2
Лучший ответ Сообщение было отмечено vvsibiri как решение

Решение

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
#include <iostream>
 
template<typename T, typename Cmp>
const T* find_maxseq(const T* _f, const T* _l, Cmp cmp, const T*& e){
    const T* p = _l;
    unsigned int m = 0, i = 0;
    do {
        if((_f == _l) || !cmp(*_f)){
            if(i > m){
                m = i;
                p = _f - i;
                e = _f;
            }
            i = 0;
        } else
            ++i;
    } while(_f++ != _l);
    return p;
}
 
template<typename T>
struct tcmp {
    bool operator () (const T& val) const {
        return (val > 0);
    }
};
 
 
int main(void){
    int a[] = { 2, 2, -3, 4, 12, 16, 32, -5, 6, 7};
    int n   = sizeof(a)/sizeof(a[0]);
 
    const int* e;
    const int* p = find_maxseq(a, a + n, tcmp<int>(), e); 
    if(p != a + n){
        //вывести
        for(const int* i = p; i != e; ++i)
            std::cout << *i << ' ';
        std::cout << std::endl;
 
        std::cout << "index: " << (ptrdiff_t)(p - a) << std::endl;
        std::cout << "count: " << (ptrdiff_t)(e - p) << std::endl;
    } else
        std::cout << "not found!" << std::endl;
    system("pause");
    return 0;
}
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 13:22

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

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

Найти самую длинную последовательность цифр в строке
Помогите новичку, пожалуйста) Нарушен п.5.18 Правил Запрещено размещать задания и решения в виде...


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

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

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