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