
Вопрос задан 29.10.2023 в 01:17.
Предмет Информатика.
Спрашивает Вернер Полина.
Максимальная длина монотонного фрагмента последовательности. Дана последовательность натуральных
чисел, завершающаяся числом 0. Определите наибольшую длину монотонного фрагмента последовательности (то есть такого фрагмента, где все элементы либо больше предыдущего, либо меньше). Ввод Вывод 1 2 7 7 9 1 0

Ответы на вопрос

Отвечает Мальгина Анна.
===== PascalABC.NET =====
begin
var (k, kmax, s) := (1, 0, 1);
var a := ReadInteger;
if a = 0 then
begin
Print(1);
exit
end;
foreach var b in ReadSeqIntegerWhile(p -> p <> 0) do
begin
var sgn := Sign(b - a);
a := b;
if sgn = s then
k += 1
else
begin
if k > kmax then
kmax := k;
(k, s) := (2, sgn)
end
end;
if k > kmax then
kmax := k;
Print(kmax)
end.




Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Монотонный фрагмент последовательности - это фрагмент последовательности, в котором все элементы либо строго возрастают, либо строго убывают.
Для решения этой задачи, можно использовать следующий алгоритм. Изначально устанавливаем счетчики длины возрастающего и убывающего фрагментов равными 1. Затем последовательно проходим по элементам последовательности, начиная со второго элемента. Если текущий элемент больше предыдущего, увеличиваем счетчик длины возрастающего фрагмента на 1. Если текущий элемент меньше предыдущего, увеличиваем счетчик длины убывающего фрагмента на 1. Если текущий элемент равен предыдущему, счетчики сбрасываются до 1. После каждого шага, проверяем, является ли текущая длина возрастающего или убывающего фрагмента максимальной и обновляем максимальную длину при необходимости.
В данном случае, после обработки последнего элемента, максимальная длина будет равна 3, так как в последовательности есть фрагмент 7-7-9, который является наибольшим монотонным фрагментом.
Определение максимальной длины фрагмента будет выглядеть следующим образом:
```
sequence = [] # создаем пустой список для хранения последовательности
number = int(input()) # считываем первое число
while number != 0: # пока число не равно 0, добавляем его в список
sequence.append(number)
number = int(input())
max_increasing_length = 1 # инициализируем максимальную длину возрастающего фрагмента
max_decreasing_length = 1 # инициализируем максимальную длину убывающего фрагмента
current_increasing_length = 1 # инициализируем текущую длину возрастающего фрагмента
current_decreasing_length = 1 # инициализируем текущую длину убывающего фрагмента
for i in range(1, len(sequence)): # проходим по элементам последовательности, начиная со второго
if sequence[i] > sequence[i-1]: # если текущий элемент больше предыдущего
current_increasing_length += 1 # увеличиваем длину возрастающего фрагмента на 1
current_decreasing_length = 1 # сбрасываем длину убывающего фрагмента до 1
elif sequence[i] < sequence[i-1]: # если текущий элемент меньше предыдущего
current_decreasing_length += 1 # увеличиваем длину убывающего фрагмента на 1
current_increasing_length = 1 # сбрасываем длину возрастающего фрагмента до 1
else: # если текущий элемент равен предыдущему
current_increasing_length = 1 # сбрасываем длину возрастающего фрагмента до 1
current_decreasing_length = 1 # сбрасываем длину убывающего фрагмента до 1
max_increasing_length = max(max_increasing_length, current_increasing_length) # проверяем и обновляем максимальную длину возрастающего фрагмента
max_decreasing_length = max(max_decreasing_length, current_decreasing_length) # проверяем и обновляем максимальную длину убывающего фрагмента
max_length = max(max_increasing_length, max_decreasing_length) # выбираем из двух максимальных длин наибольшую
print(max_length) # выводим максимальную длину
```
Пример работы программы с введенной последовательностью 1 2 7 7 9 1 0:
```
1
2
7
7
9
1
0
```
Результат:
```
3
```
То есть максимальная длина монотонного фрагмента последовательности равна 3.
0
0


Похожие вопросы
Топ вопросов за вчера в категории Информатика

Информатика 566

Информатика 25

Информатика 22

Информатика 27

Информатика 34

Информатика 58

Информатика 63

Информатика 23
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili