Array39. Дан массив размера $$N$$. Найти количество его промежутков монотонности (то есть участков, на которых его элементы возрастают или убывают).
Решение :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
program Array39; var a:array[1..10] of integer; N,i,Num:Integer; begin a[1]:=0; Write('N: '); Readln(N); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; Num:=0; for i:=3 to N do begin if (a[i-2]>a[i-1]) and not(a[i-1]<a[i]) then inc(Num); if (a[i-2]<a[i-1]) and not(a[i-1]>a[i]) then inc(Num); end; if not(a[N-1]=a[N]) then inc(Num); Writeln(Num); readln; end. |
Решение от olegst1975:
1 2 3 4 5 6 7 8 9 10 11 12 |
var n,i,num:integer; a:array [1..10]of real; begin readln(n); for i:=1 to n do readln(a[i]); if a[n]<>a[n-1] then num:=1 else num:=0; for i:=2 to n-1 do if (a[i-1]<>a[i])and(((a[i-1]-a[i])>0)xor((a[i]-a[i+1])>0)or(a[i]=a[i+1])) then inc(num,1); writeln(num); end. |
Другие задачи из раздела Array можно посмотреть здесь.
[/crayon]
по данному алгоритму в массиве:
3 2 2 2 3
два экстремума, 2 и 4 элемент, но это не так… покрайней мере по условию экстремумов в данном учебнике.
и у меня к стати тоже самое… поправил
Было:
Стало:
Не обращаем внимание на мои «экстремумы». Это не актуально при повторяющихся числах. Мне кажется как раз раньше было правильно, а теперь Ваше решение отслеживает только строгие максимумы и минимумы. Вышеприведенный пример 3 2 2 2 3 — два интервала монотонности: 3 2 — элементы убывают, 2 3 — возрастают. Ну и строку 23 на 16 в виде:
[/crayon]
Мой обновленный «ужос»:
[/crayon]
Вернул всё как было в итоге..
добавил ещё одно решение.
В общем ситуация такая в задании:
(то есть участков, на которых его элементы возрастают или убывают).
И вот с этим наши алгоритмы справляются.
А вот учаски на которых функция не убывает и не возрастает они игнорируют.
Пример:
1 2 2 1 2 3 4 4 5 4
здесь они показывают 5.
но мне как профану в убывающих и возрастающих функциях кажется что промежутков монотонности 7…. где правда не знаю… 🙁
сам отвечаю на свой вопрос… просто я забыл что такое моннотоность функции, отрезок со значениями 1 2 2 возрастает и является монтонный, 1 2 3 строго монотонный отрезок… так что отрезков монотонности действительно 5, притом отрезки монотонности 1 2 2 и 2 2 1 пересекаются %)