Нахождение подмассива в массиве с заданными условиями - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Помогите решить задачу: Определить индексы i, j, для которых существует наиболее длинная последовательность А[i] < A[i+1] < A[i+2] < A[i+3] < … < A[j]. Не пойму, как подойти к решению. Помогите, пожалуйста.

Решение задачи: «Нахождение подмассива в массиве с заданными условиями»

textual
Листинг программы
#include <stdio.h>
 
int main()
{
    int i, j, n = 0, max = 0;
    int A[20] = {2, 3, 4, 0, -1, 0, 1, 2, 3, -4, 1, 4, 5, 6, 7, 9, 14, 12, 18, 31};
    for(i = 1; i < 20; i++){
        if(A[i - 1] < A[i]){
            ++n;
            if(n > max){
                max = n;
                j = i;
            }
        }
        else
            n = 0;
    }
    printf("i = %d j = %d\n", j - max, j);
    return 0;
}

Объяснение кода листинга программы

  1. Объявлены переменные:
    • i, j - циклы итераций;
    • n - счетчик количества элементов подмассива;
    • max - максимальное количество элементов подмассива.
  2. Задается исходный массив:
    • A[20] = {2, 3, 4, 0, -1, 0, 1, 2, 3, -4, 1, 4, 5, 6, 7, 9, 14, 12, 18, 31}.
  3. Цикл перебирает элементы массива с индексами от 1 до 19.
  4. В каждой итерации сравниваются два соседних элемента массива. Если текущий элемент больше следующего, то увеличивается счетчик n и проверяется, является ли значение n максимальным.
  5. Если текущий элемент меньше следующего, то значение n сбрасывается в 0.
  6. После завершения цикла выводится значение j, которое является индексом последнего элемента подмассива, и значение j - max, которое является длиной подмассива.
  7. Возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы