Найти в массиве целых чисел наиболее длинную возрастающую последовательность - C (СИ)
Формулировка задачи:
Найти в массиве целых чисел наиболее длинную возрастающую последовательность (Си)
Решение задачи: «Найти в массиве целых чисел наиболее длинную возрастающую последовательность»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #define N 20
- int main()
- {
- int A[N] = {4,2,18,21,43,34,56,78,121,234,543,546,765,0,-16,97,342,765,841,967};
- int i, high, max = 0, flag = 0, x = 0;
- for(i = 1; i < N; ++i){
- if(A[i] > A[i - 1]){
- flag = 1;
- ++x;
- if(x > max){
- max = x;
- high = i;
- }
- }
- else{
- flag = 0;
- x = 0;
- }
- }
- printf("The largest increasing sequence is A[%d] = %d -> A[%d] = %d\n", high - max, A[high - max], high, A[high]);
- printf("All %d numbers.\n", max + 1);
- return 0;
- }
Объяснение кода листинга программы
В данном коде задача состоит в поиске наибольшей возрастающей последовательности в массиве целых чисел. Список действий:
- Подключение необходимых библиотек
- Установка размера массива N = 20
- Инициализация массива A значениями {4,2,18,21,43,34,56,78,121,234,543,546,765,0,-16,97,342,765,841,967}
- Создание переменных:
- i = 1 (счетчик для цикла)
- high = 0 (индекс последнего элемента возрастающей последовательности)
- max = 0 (длина наибольшей возрастающей последовательности)
- flag = 0 (флаг для определения возрастающей последовательности)
- x = 0 (счетчик элементов возрастающей последовательности)
- Цикл for для проверки каждого элемента массива A, начиная со второго элемента
- Проверка условия: если текущий элемент больше предыдущего, то
- flag = 1 (флаг возрастающей последовательности установлен в 1)
- ++x (увеличивается счетчик элементов возрастающей последовательности)
- если x больше max, то
- max = x (длина наибольшей возрастающей последовательности равна x)
- high = i (индекс последнего элемента наибольшей возрастающей последовательности равен i)
- иначе (если текущий элемент меньше или равен предыдущему), то
- flag = 0 (флаг возрастающей последовательности установлен в 0)
- x = 0 (счетчик элементов возрастающей последовательности сброшен в 0)
- Вывод наибольшей возрастающей последовательности: A[high - max] -> A[high]
- Вывод всех элементов наибольшей возрастающей последовательности: max + 1
- Конец программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д