Новая Школа - онлайн-школа подготовки к ЕГЭ
Информатика · 10 класс Задача №3583081
А
Аноним
11 марта 2026 05:23 · публичный вопрос
А
Аноним

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

Ответ нейросети
11 марта 2026 05:23

Задача: найти максимальную длину подряд идущих элементов в массиве целых чисел длиной 30, таких что каждый следующий элемент больше предыдущего. Это максимальная длина возрастающей непрерывной подпоследовательности.

Пошаговое объяснение (для понятности):

  • Идем слева направо по массиву.
  • Пусть current_len — длина текущей возрастающей подряд идущей части; max_len — максимальная найденная длина.
  • Инициализируем: current_len = 1 (хотя бы один элемент в текущей последовательности), max_len = 1.
  • Для каждого элемента с индексом i, начиная с 1:
    • Если a[i] > a[i-1], значит текущая последовательность продолжилась, увеличиваем current_len на 1.
    • Иначе текущая последовательность оборвалась, устанавливаем current_len в 1.
    • Обновляем max_len: max_len = max(max_len, current_len).
  • В конце max_len — искомая длина.
  • Временная сложность: O(n), где n — длина массива (в нашем случае n = 30). Память: O(1).

Пример на Python (понятно и компактно):

  • Функция принимает список целых чисел и возвращает максимальную длину возрастающей подпоследовательности подряд идущих элементов.

Python: def max_increasing_run_len(arr): n = len(arr) if n == 0: return 0 max_len = 1 cur_len = 1 for i in range(1, n): if arr[i] > arr[i - 1]: cur_len += 1 else: cur_len = 1 if cur_len > max_len: max_len = cur_len return max_len

Пример использования: arr = [3, 4, 6, 7, 5, 6, 7, 8, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] print(max_increasing_run_len(arr)) # здесь вернется длина самой длинной возрастающей последовательности подряд

Если нужно решение на другом языке (например, C++ или Java), могу привести эквивалент.

C++ (один вариант, без лишних зависимостей): #include using namespace std;

int maxIncreasingRunLen(const vector& arr) { int n = (int)arr.size(); if (n == 0) return 0; int max_len = 1; int cur_len = 1; for (int i = 1; i < n; ++i) { if (arr[i] > arr[i - 1]) { ++cur_len; } else { cur_len = 1; } if (cur_len > max_len) max_len = cur_len; } return max_len; }

Java (вариант на Java): public static int maxIncreasingRunLen(int[] arr) { if (arr == null || arr.length == 0) return 0; int maxLen = 1; int curLen = 1; for (int i = 1; i < arr.length; i++) { if (arr[i] > arr[i - 1]) { curLen++; } else { curLen = 1; } if (curLen > maxLen) maxLen = curLen; } return maxLen; }

Замечания:

  • Если массив длины 0 вернуть 0; для непустого массива минимальная искомая длина — 1 (есть хотя бы один элемент).
  • Алгоритм корректен для любого размера массива, для вашего случая длина 30 не требует специальных условий — просто используйте n = 30 как длину входного массива.

Обсуждение

1 сообщение
А
Аноним

что делает arr