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

    Начальное и конечное значение при этом локальными максимумами не считаются.
    Pascal или Python

Ответы 1

  • Под локальным максимумом, скорее всего, имеется в виду число, большее чем оба его соседа, за исключением случая, когда соседом справа является 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.
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years