Array33. Дан массив размера $$N$$. Найти номер его последнего локального максимума (локальный максимум — это элемент, который больше любого из своих соседей).
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
program Array33; var a:array[1..10] of integer; N,i:Integer; begin Write('N: '); Readln(N); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; i:=N-1; if a[N]>a[N-1] then writeln(N) else begin while (i>1) and (not((a[i-1]<a[i]) and (a[i]>a[i+1]))) do dec(i); Writeln(i); end; end. |
Другие задачи из раздела Array можно посмотреть здесь.
Сейчас получаем номер первого(не последнего!) лок.максимума, также без учета первого и последнего элементов
Переписал.
Было:
Стало:
Последний максимум — первый с конца элемент, который меньше предыдущего элемента. Схожая с Array32, только перебор в обратном порядке
[/crayon]
опять же массив: 3 4 5 5 5 4 3
Локальных максимумов нет.
«локальный максимум — это элемент, который больше любого из своих соседей»
то же самое (см array32) после while нужно проверять i