Найти наибольшую возрастающую подпоследовательность в массиве - 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; }
Объяснение кода листинга программы
- В функции series определяется переменная i для цикла, n для подсчета количества элементов в возрастающей последовательности, max для хранения максимального количества элементов в последовательности, k для хранения индекса последнего элемента последовательности, x для подсчета количества серий.
- Цикл for проходит по всем элементам массива, начиная со второго элемента.
- Внутри цикла проверяется, является ли текущий элемент больше предыдущего. Если да, то увеличивается значение переменной n, и если n становится равным 3, то начинается новая серия. Если значение n становится больше max, то обновляются значения max и k.
- После цикла for выводится длина наибольшей возрастающей последовательности и ее элементы.
- В функции main создается массив A, содержащий 20 чисел.
- Вызывается функция series с массивом A и его размером 20.
- Выводится количество серий, найденных в массиве.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д