2 / 1 / 1
Регистрация: 12.01.2018
Сообщений: 17
1

Максимум всех подмассивов в массиве

27.02.2018, 20:24. Показов 667. Ответов 0
Метки нет (Все метки)

Правильны ли мои рассуждения в комментариях? Можно ли совместить первый и второй цикл for, ведь while у них одинаковый?
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
void printKMax(int arr[], int n, int k) {
    deque<int> deq{ 0 };
    int i;
    for (i = 1; i != k; ++i) { //Обрабатываем первые k-элементов
        while (!deq.empty() && arr[deq.back()] <= arr[i]) //Если след. элемент массива больше элемета по последнему индексу из конт.,
            deq.pop_back(); //удаляем все индексы на элементы до первого большего или весь контейнер индексов
        deq.push_back(i); //Помещаем новый индекс в конт.
    }
    for (; i != n; ++i) { //Обрабатываем остальную часть массива
        cout << arr[deq.front()] << " "; //Выводим элемент по 1ому индексу из контейнера(самый большой)
        if (i - k >= deq.front()) { //Если происходит выход за границы подмассива(индекс - граница подмассива >= 1му индексу из контейнера)
            deq.pop_front();// удаляем первый индекс
        }
        while (!deq.empty() && arr[deq.back()] <= arr[i])
            deq.pop_back();
        deq.push_back(i);
    }
    cout << arr[deq.front()]; //Выводим элемент по последнему индексу из конт.
}
 
int main()
{
    int arr[] = { 12, 1, 78, 90, 57, 89, 56, 33, 6, 43, 48, 3, 56, 45, 23, 76, 45, 23 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 4;
    printKMax(arr, n, k);
    cin.get();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2018, 20:24
Ответы с готовыми решениями:

Объединение подмассивов в массиве
Есть массив с подмассивами такого типа: =&gt; Array ( =&gt; 7 ...

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

В целочисленном массиве имеется единственный нулевой элемент, разделяющий его на две части. В частном случае любой из подмассивов может быть пустым
В целочисленном массиве имеется единственный нулевой элемент, разделяющий его на две части. В...

Даны действительные числа х, у, z Вычислить максимум (x.y) + максимум (y.z) + максимум (х z)
1. Даны действительные числа х, у, z Вычислить максимум(x.y) + максимум(y.z) + максимум(х z) ...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2018, 20:24
Помогаю со студенческими работами здесь

Максимум в массиве
Сформируйте одномерный массив из 9 целых чисел с клавиатуры (через едит или стринг грид ) . найдите...

Максимум в массиве
Дано натуральное число n, действительные числа а1, ..., an. Получить max (/ а1 /, ..., / аn /) и...

максимум в массиве
Народ, помогите! Как найти максимум в массиве с помощью циклов и условного оператора?

Максимум в массиве
Вводится массив, состоящий из целых чисел. Найти наибольшее среди них. Входные данные Сначала...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru