Найти наибольшую возрастающую подпоследовательность в массиве - 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.
- Выводится количество серий, найденных в массиве.