Найти наибольшую возрастающую подпоследовательность в массиве - C (СИ)

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

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

Доброго времени суток. мой вопрос вот в чем, мне надо сделать функцию, принимающию массив целых чисел и их чилсо. функция проверяет сколько серий чисел идут в прибовляющемся порядке, печатает самый длинный порядок(если есть несколько одного и того же размера то первый), и возрвращает количество таких серий. к примеру: масив: int arr[]={12

,3,4,23,

10, 6,

5,6,7,79

,67,60,13,

12,46,47,67

,60, 23,16,8} , size=21 функция печатает: Longest series: 5 6 7 79 и возвращает 3.(есть 3 серии растущих чисел) заранее спасибо)

Решение задачи: «Найти наибольшую возрастающую подпоследовательность в массиве»

textual
Листинг программы
#include <stdio.h>
int series(int A[], int size)
{
  int i, n = 1, max = 0, k, x = 0;
    for(i = 1; i < size; i++){
        if(A[i] > A[i - 1]){
           n++;
           if(n == 3)//серией будем считать возрастающую последовательность от 3-х элементов и более
                x++;
           if(n > max){
                max = n;
                k = i;
           }
        }
        else
            n = 1;
    }
    printf("Longest series A[%d] - A[%d]\n%d elements\n", k - max + 1, k, max);
    for(i = k - max + 1; i <= k; i++)
        printf("%d ", A[i]);
    return x;
}
int main()
{
    int A[20] = {5,12,46,-63,-54,-45,-36,-27,0,122,90,75,33,1,987,14,354,780,9,890};
    printf("\nQuantity series: %d\n", series(A, 20));
    return 0;
}

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

  1. В функции series определяется переменная i для цикла, n для подсчета количества элементов в возрастающей последовательности, max для хранения максимального количества элементов в последовательности, k для хранения индекса последнего элемента последовательности, x для подсчета количества серий.
  2. Цикл for проходит по всем элементам массива, начиная со второго элемента.
  3. Внутри цикла проверяется, является ли текущий элемент больше предыдущего. Если да, то увеличивается значение переменной n, и если n становится равным 3, то начинается новая серия. Если значение n становится больше max, то обновляются значения max и k.
  4. После цикла for выводится длина наибольшей возрастающей последовательности и ее элементы.
  5. В функции main создается массив A, содержащий 20 чисел.
  6. Вызывается функция series с массивом A и его размером 20.
  7. Выводится количество серий, найденных в массиве.

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


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

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

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