Найдите самую длинную возрастающую подпоследовательность. - Turbo Pascal

Формулировка задачи:

Дана последовательность n целых чисел. Найдите самую длинную возрастающую подпоследовательность.
uses crt;
type vector=array[1..100] of integer;
var k,n,i,j,q,t:integer;
        a,b,p:vector;
procedure cnk(m,l:integer);
var i:integer;
begin
writeln;
  if m=0 then begin
   for j:=1 to k do
   write(p[j],' ');
  end
  else
  for i:=l to n-m+1 do
  begin
   p[k-m+1]:=a[i];
   cnk(m-1,i+1)
  end;
end;
 
begin
  writeln ('Подмножества из N по K');
  writeln ('Введите N,K:');
  read(n);
  for i:=1 to n do
  begin
    a[i]:=random(10);
    write(a[i],' ');
    end;
    k:=1;
    repeat
 
    k:=k+1;
    writeln;
 
for j:=1 to k do
for t:=2 to k do
if p[j]<=p[j+1] then
begin
inc(q);
for j:=1 to q do
b[j]:=p[j];
end;
      cnk(k,1);
 
    until(k>n);
 
 
end.
Моя программа генерирует все множества из n количества элементов. Не могу найти самую длиннную возраст подпоследовательность. Помогите пожалуиста

Код к задаче: «Найдите самую длинную возрастающую подпоследовательность. - Turbo Pascal»

textual
uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
      i,j,n,k,p1,max:byte;
begin
clrscr;
repeat
write('Размер массива от 2 до ',nmax,' n=');
readln (n);
until n in [2..nmax];
writeln('Введите ',n,' элементов массива:');
for i:=1 to n do
readln (a[i]);
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
{Поиск позиции и длины максимальной цепи}
max:=0;{Первоначальные значения}
i:=2;p1:=0;
while i<=n do
if a[i]>a[i-1] then
  begin
   k:=1;j:=i;
   while (a[j]>a[j-1])and(j<=n) do
    begin
     inc(j);
     inc (k); {Если возрастает - наращиваем счётчик}
    end;
   if k>max then
    begin
     max:=k;
     p1:=i-1;
    end;
   i:=i+k;{перепрыгиваем}
  end
else inc(i);
writeln; {Выводим результат}
if max=0 then write('Участков возрастания нет!')
else
 begin
  writeln('Максимальная длина=',max);
  for i:=p1 to p1+max-1 do
  write (a[i],' ');
 end;
readln
end.

14   голосов, оценка 3.643 из 5


СОХРАНИТЬ ССЫЛКУ