Đoạn con có các số hạng dương liên tiếp có tổng lớn nhất. nhất (nếu có nhiều đoạn con thoả mãn thì đọc ra màn hình : số đoạn con thoả mãn và các đoạn con đó )

2 câu trả lời

uses crt;
var i,j,n,s,x,d,max:longint; a:array[1..10000]of longint;
begin
clrscr;
   write('Nhap n: ');readln(n);
   for i:=1 to n do
      begin
         write('Nhap phan tu thu ',i,': ');readln(a[i]);
      end;
   for i:=1 to n do
      begin
         j:=1;
         s:=0;
         while (a[i+j-1]>0) do
            begin
               s:=s+a[i+j-1];
               if s>max then
                  begin
                     max:=s;
                     d:=0;
                  end;
               if s=max then d:=d+1;
               inc(j);
            end;
      end;
   if max=0 then writeln('Khong co doan con thoa man') else
      begin
         writeln('Tong lon nhat: ',max);
         writeln('Co ',d,' doan con thoa man');
         for i:=1 to n do
            begin
               j:=1;
               s:=0;
               while (a[i+j-1]>0) do
                  begin
                     s:=s+a[i+j-1];
                     if s=max then
                        begin
                           for x:=i to i+j-1 do write(a[x],' ');
                           writeln;
                        end;
                     inc(j);
                  end;
            end;
      end;
readln
end.

phải này ko bạn: mình tự làm ko biết đúng ko

uses crt;

 var a:array[1..100] of longint;

 i,n,sld,j,max:integer;

 BEGIN

 clrscr;

 write('Vao n=');readln(n);

 for i:=1 to n do

    begin  write('a[',i,']=');readln(a[i]);end;

i:=1; max:=0;

While i<=n do

if a[i]>0 then

     begin

     sld:=0; j:=i;

        while ((j<=n)and(a[j]>0)) do

                   begin

                    inc(sld);

                     inc(j);

                    end;

           if sld>max  then max :=sld;

               inc(i,sld);

 end

Else inc(i);

writeln('So luong duong lien tiep nhieu nhat la:',max);

readln;

END.

#hlong210410

Câu hỏi trong lớp Xem thêm