Дан одномерный массив из N целых чисел. Найти в массиве максимальную длинну...

0 голосов
62 просмотров

Дан одномерный массив из N целых чисел. Найти в массиве максимальную длинну последовательности из подряд идущих элементов каждый из которых больше или равен предыдущему


Информатика (15 баллов) | 62 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

// PascalABC.NET 3.0, сборка 1160 от 05.02.2016
begin
  var a:=ArrRandom(ReadInteger('n='),1,9); a.Println;
  var maxl:=0; // максимальная из длин
  var currl:=1; // текущая длина
  for var i:=1 to a.Length-1 do
    if a[i]>=a[i-1] then Inc(currl)
    else begin
      if currl>maxl then maxl:=currl;
      currl:=1
      end;
  if currl>maxl then maxl:=currl;
  Writeln('Максимальная длина ',maxl);
end.

Тестовое решение:
n= 15
4 2 4 4 1 1 1 7 4 9 4 4 5 4 7
Максимальная длина 4

(142k баллов)
0

А где N?

0

И правда.... сейчас сделаем

0

1 4 2 3 1
Максимальная длина 2. Хотя тут сразу видно подпоследовательность 1 2 3

0

Смысл не в этом, а в том, что можно и без второго массива решить

0

Откуда 1 2 3 в 1 4 2 3 1 ???

0

По условию "из подряд идущих элементов"

0

извиняюсь, это я ошибся

0

как обычно все усложняю

0 голосов

Var
  a: array[1..100] of integer;
  n, i, maxlen, len: integer;
 
begin
  write('Введите длину последовательности n: ');
  read(n);
  write('Введите последовательность: ');
  for i := 1 to n do read(a[i]);
  len := 1;
  for i := 2 to n do
    if a[i - 1] <= a[i] then inc(len)<br>    else
    begin
      maxlen := max(len, maxlen);
      len := 1;
    end;
  write('Максимальная длина возрастающей последовательности: ', max(maxlen, len));
end.

(13.3k баллов)