Đ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