Найти в массиве целых чисел наиболее длинную возрастающую последовательность - 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;
}

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

В данном коде задача состоит в поиске наибольшей возрастающей последовательности в массиве целых чисел. Список действий:

  1. Подключение необходимых библиотек
  2. Установка размера массива N = 20
  3. Инициализация массива A значениями {4,2,18,21,43,34,56,78,121,234,543,546,765,0,-16,97,342,765,841,967}
  4. Создание переменных:
    • i = 1 (счетчик для цикла)
    • high = 0 (индекс последнего элемента возрастающей последовательности)
    • max = 0 (длина наибольшей возрастающей последовательности)
    • flag = 0 (флаг для определения возрастающей последовательности)
    • x = 0 (счетчик элементов возрастающей последовательности)
  5. Цикл for для проверки каждого элемента массива A, начиная со второго элемента
  6. Проверка условия: если текущий элемент больше предыдущего, то
    • flag = 1 (флаг возрастающей последовательности установлен в 1)
    • ++x (увеличивается счетчик элементов возрастающей последовательности)
    • если x больше max, то
    • max = x (длина наибольшей возрастающей последовательности равна x)
    • high = i (индекс последнего элемента наибольшей возрастающей последовательности равен i)
    • иначе (если текущий элемент меньше или равен предыдущему), то
    • flag = 0 (флаг возрастающей последовательности установлен в 0)
    • x = 0 (счетчик элементов возрастающей последовательности сброшен в 0)
  7. Вывод наибольшей возрастающей последовательности: A[high - max] -> A[high]
  8. Вывод всех элементов наибольшей возрастающей последовательности: max + 1
  9. Конец программы

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


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

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

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