Chương trình đơn giản

JC

Viết chương trình in ra dãy con tăng không liên tiếp dài nhất trong mảng a[1..n]

0 < n < 100000

0<a[i]<100

Bằng c++ hoặc pascal

Tự nhiên giáo viên lớp ra bài này, giúp em với :((((

NT
17 tháng 1 2020 lúc 13:13

tăng liên tiếp thì được, chứ tăng không liên tiếp là cái gì? mình không hiểu lắm

Bình luận (1)
 Khách vãng lai đã xóa
TD
7 tháng 4 2021 lúc 20:10

Chắc muộn rồi nhưng code(dùng QHĐ):

uses crt,math;
var a:array[0..100000] of Integer;
    f:array[0..100000] of Integer;
    point:array[0..100000] of Integer;
    i,n,j,maxn,maxloc:integer;
    f1:text;
Procedure truyvet(vt:integer);
begin
    if vt<>0 then truyvet(point[vt])
    else exit();
    write(a[vt],' ');
end;
Begin
    clrscr;
    assign(f1,'daycontang.inp'); reset(f1);
    readln(f1,n);
    for i:=1 to n do read(f1,a[i]);
    a[0]:=-1; f[0]:=0;
    for i:=1 to n do
        begin
            for j:=i-1 downto 0 do
                if (a[i]>a[j]) and (f[j]<>0) then
                   begin
                       if f[i]<f[j] then point[i]:=j;
                       f[i]:=max(f[i],f[j]);
                   end;
            f[i]:=f[i]+1;
            if maxn<f[i] then
               begin
                   maxn:=f[i];
                   maxloc:=i;
               end;
        end;
    writeln(maxn);
    truyvet(n);
    readln;
End.

 

Bình luận (0)

Các câu hỏi tương tự
NT
Xem chi tiết
TH
Xem chi tiết
LB
Xem chi tiết
HC
Xem chi tiết
TB
Xem chi tiết
HP
Xem chi tiết
NT
Xem chi tiết
AA
Xem chi tiết
DH
Xem chi tiết