Дан одномерный массив , заполненный случайным образом десятью числами из диапазона от 0...

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

Дан одномерный массив , заполненный случайным образом десятью числами из диапазона от 0 до 100. Найтисамую длинную послпоследовательность чисел, упорядоченную по возрастанию. Вывести ее и ее длину на экран.


Информатика (25 баллов) | 80 просмотров
0

и это на паскале? -.-

0

Да

0

abc.net или обычный?

0

Abc.net

0

хм... ну ок. Щас напишем.

Дано ответов: 2
0 голосов
Правильный ответ

Ответ в файле.>>>>>>>>

(6.9k баллов)
0 голосов

Const
  n=10;
var
  a:array[1..n] of integer;
  i,_start,_end, startInd, endInd:integer;
begin
  Randomize;
  Write('Исходный массив: ');
  _start:=-1; _end:=-1;
  startInd:=-1; endInd:=-1;
 
  for i:=1 to n do
  begin
    a[i]:=random (0,100);
    Write(a[i],' ');
  end;
  Writeln;

  for i:=2 to n do
  begin
    if a[i]>a[i-1] then
      if _start > -1 then _end := i else
         begin
         _start := i-1;
         _end := i;
         end
    else
      begin
      
      if (_start > -1) and ((endInd - startInd) < (_end - _start)) then
        begin
         startInd := _start;
         endInd := _end;
        end;
        
      _start := -1;
      _end := -1;
      end;
  end;
 
  if startInd > -1 then
  begin
    Writeln('Длина диапазона: ', (endInd-startInd+1));
    Write('Значения из диапазона: ');
    for i:=startInd to endInd do Write(a[i],' ');
  end;

end.

(466 баллов)
0

там вон в варианте выше неплохо реализовано все, компактнее чем в моем варианте. Но суть одинакова.

0

что обозначают эти переменные?

0

короче чтобы реализовать данный алгоритм нужно хранить два диапазона индексов

0

главный это без __ в него сохраняем индексы самого длинного диапазона возрастающего.

0

а с подчеркиванием в начале это диапазон для каждого последующего найденного диапазона

0

старт - это для индекса начала, энд - это для индекса окончания.

0

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

0

его мы и берем потом в самом конце в качестве ответа

0

потому что мы каждый раз туда пересохраняем новонайденный диапазон большей длины, чем был сохранен там.

0

я очень фигово это скорее всего объяснил, тут важно понять саму суть алгоритма, когда мы сохраняем две точки, а потом сравниванием каждый раз длину между этими двумя точками с очередной найденной длиной между двумя точками, другими...