Help e bài này ạ viết chương trình nhập n và mảng a gồm n phần tử, in ra dãy tăng lớn nhất trong mảng và độ dài dãy đó. vd: Input: n=5, a={-2;3;6;8;4

Help e bài này ạ
viết chương trình nhập n và mảng a gồm n phần tử, in ra dãy tăng lớn nhất trong mảng và độ dài dãy đó.
vd:
Input: n=5, a={-2;3;6;8;4;5}
Output: -2; 3; 6; 8 do dai day 4
*Đệ quy hoặc quy hoạch động ạ

0 bình luận về “Help e bài này ạ viết chương trình nhập n và mảng a gồm n phần tử, in ra dãy tăng lớn nhất trong mảng và độ dài dãy đó. vd: Input: n=5, a={-2;3;6;8;4”

  1.   uses crt;
    var n,i,j:longint; a,l,t:array[0..100000]of longint;
    begin
    clrscr;
       readln(n);
       for i:=1 to n do read(a[i]); readln;
       a[n+1]:=high(longint);
       a[0]:=low(longint);
       for i:=n downto 0 do
          for j:=i to n+1 do
             if(a[i]<a[j])and(l[i]<l[j]+1)then begin l[i]:=l[j]+1; t[i]:=j; end;
          i:=0;
       while t[i]<>0 do
          begin
             i:=t[i];
             if i<n+1 then write(a[i],’ ‘);
          end;
    readln
    end.

    Bình luận
  2. uses crt;
    var n,i,j,x,vt,max:longint;l,a,t:array[0..1000]of longint;
    begin
    clrscr;
    readln(n);
    for i:=1 to n  do
    readln(a[i]);
    for i:=n-1 downto 1 do
    begin
    for j:=i+1 to n do
    if(i<>j)and(l[i]<l[j]+1)and(a[i]<a[j])then begin l[i]:=l[j]+1;t[i]:=j;end;
    end;
    for i:=1 to n do
    if(max<l[i])then begin max:=l[i];vt:=i;end;
    t[0]:=vt;
    l[0]:=max+1;
    x:=t[0];
    repeat
    write(a[x],’ ‘);
    x:=t[x];
    until x=0;
    readln;
    end.
    readln;
    end.

    Bình luận

Viết một bình luận