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

Определите наименьшее расстояние между двумя локальными максимумами последовательности натуральных чисел, завершающейся числом 0. если в последовательности нет двух локальных максимумов, выведите число 0. начальное и конечное значение при этом локальными максимумами не считаются. pascal или python

Показать ответ
Ответ:
Павел22032006
Павел22032006
02.10.2020 11:37
Под локальным максимумом, скорее всего, имеется в виду число, большее чем оба его соседа, за исключением случая, когда соседом справа является 0. В таком случае достаточно однократно пройтись по всем числам, запоминая минимальное из расстояний между новым и предыдущим обнаруженными максимумами.
Программа (язык Pascal ABC.Net)
var i1,i2,i3:integer;
    i:integer;
    curr,minr,lastmax:integer;
begin
  readln(i1,i2);
  i:=2;
  minr:=1000000;
  repeat
    readln(i3);
    if (i2>i1) and (i2>i3) and (i3<>0) then begin
      curr:=i-lastmax;
      if curr<minr then minr:=curr;
      lastmax:=i;
    end;
   
    i1:=i2;
    i2:=i3;
    i+=1;
  until i2=0;
  if minr=1000000 then writeln(0) else writeln(minr); {стоило бы добавить булевую переменную в качестве флага - был ли хоть один max, но вряд ли расстояние между ними превысит миллион :-}
end.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота