Вывести длину самой длинной цепочки чисел в массиве - C (СИ)
Формулировка задачи:
Добрый вечер. Дан одномерный массив размерностью n. Вводится с клавиатуры числа. Необходимо выделить длину самой длинной цепочки чисел по возрастающей. Пример,ввели числа 1,2,3,4,5,20,9 необходимо вывести: "Максимальная длина 5"
Решение задачи: «Вывести длину самой длинной цепочки чисел в массиве»
textual
Листинг программы
k=0;
for (i=0; i<n; ++i)
scanf("%d",str[i]);
for (i=0; i<n; ++i)
{
if (str[i+1]==str[i]+1)
kol+=1; //увеличиваем счётчик
else //если условие не выполняется, значит цепочка оборвалась. Необходимо занести полученное значение в массив str1, а счётчик обнулить
{
str1[k]=kol;
kol=0;
++k;
}
}
for (i=0; i<=k; ++k)
{
находим наибольший элемент в массиве str1. Это и будет ответ
}
Объяснение кода листинга программы
В данном коде решаются две задачи:
- Первая задача: нахождение длины самой длинной цепочки чисел в массиве. Для этого используется два прохода по массиву:
- В первом проходе происходит заполнение массива str числовыми значениями с помощью функции scanf.
- Во втором проходе происходит проверка на возрастание каждого элемента массива str. Если текущий элемент больше следующего на 1, то это означает начало новой цепочки. В этом случае счетчик kol увеличивается на 1. Если условие не выполняется, то это означает окончание текущей цепочки. В этом случае значение счетчика kol записывается в массив str1, а сам счетчик обнуляется. Также увеличивается значение переменной k, которая отслеживает количество записанных в массив str1 значений.
- Вторая задача: нахождение наибольшего элемента в массиве str1. Для этого используется третий проход по массиву str1 с помощью цикла for. Переменная k устанавливается равной 0, а затем в каждой итерации цикла значение переменной k увеличивается на 1. В конце цикла k будет равно количеству элементов в массиве str1, и это будет наибольшее значение в массиве. Список действий:
- Установить переменную k равной 0.
- Заполнить массив str числовыми значениями с помощью функции scanf.
- Выполнить второй проход по массиву str:
- Проверять, является ли текущий элемент больше следующего на 1.
- Если условие выполняется, увеличивать значение счетчика kol на 1.
- Если условие не выполняется, записывать значение счетчика kol в массив str1 и обнулять счетчик kol.
- Увеличивать значение переменной k на 1.
- Выполнить третий проход по массиву str1:
- Находить наибольшее значение в массиве str1.
- Установить переменную k равной количеству элементов в массиве str1.
- Вывести значение переменной k.