Помощь - Поиск - Пользователи - Календарь
Полная версия: Длиннейшая последовательность
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Kolyancz
Задана последовательность чисел N. N<=1000. Найдите длину длиннейшей возрастающей последовательности, входящей в эту последовательность.
Например:
Дана последовательность: 4 6 1 6 9 9 6 1 2
Ответ: 3 (потому что самый длинный участок - это 1 6 9)

Порядок ввода данных: сначала задается кол-во чисел в последовательности, потом числа этой последовательности.
Например:
Ввод:
9
4 6 1 6 9 9 6 1 2
Вывод:
3
volvo
Как найти в массиве максимальную возрастающую последовательность символов?

Элементарно преобразуется к варианту без использования массива... Попробуй сам, что получится - показывай...
Kolyancz
Получилось вот что:
Код

type TType = integer;
var
         n:integer;
  a: array[1 .. 1000] of integer;

function find_ascend(var arr: array of ttype;
         const n: integer; var max: integer): integer;

  var curr, start: integer;

  function check_max(i: integer): integer;
    begin
      if max < curr then
        begin
          max := curr;
          check_max := i - curr + byte(i = pred(n))
        end
      else check_max := start
    end;

  var
    i: integer;

  begin
    max := 0; curr := 1;
    start := 1;

    for i := 1 to pred(n) do
      begin
        if arr[i - 1] < arr[i] then
          inc(curr)
        else
          begin
            start := check_max(i);
            curr := 1
          end;
      end;
    start := check_max(i);
    find_ascend := start
end;


var i,_start, _max: integer;
begin
readln(n);
for i:=1 to n do
readln (a[i]);
writeln(a:n);
  _start := find_ascend(a, n, _max);
  writeln(_max) ;

end.


Счетает все отлично, вот только есть одна загвоздка. Нужно сделать ввод чисел через пробел, а не enterом. Вопрос, как?
volvo
Цитата
Вопрос, как?
Использовать функцию EOLn, и переписать ввод вот так:
n := 0;
while not eoln do begin
inc(n); read(a[n]);
end;
_start := find_ascend(a, n, _max); { Ну, и вызываешь функцию }
(теперь даже не надо вводить число элементов, оно будет подсчитываться автоматически. Просто вводишь последовательность через пробел, и в конце жмешь Enter...)
Kolyancz
Спасибо, большое, теперь все в порядке.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.