Tìm dãy con gồm m phần tử (m<=n) sao cho dãy con này có tổng lớn nhất (dãy con là dãy các phần tử liên tiếp nhau trong mảng). VD: 4 5 6 2 3 1 8 9 7 nhập m=4 => tính tổng 4 số liên tiếp có tổng là lớn nhất khi đó màn hình sẽ đưa ra tổng lớn nhất của các số 1; 8; 9; 7
Đùng function:
uses crt;
var i,n,m,max:longint; a:array[1..10000]of longint;
function s(i:longint):longint;
var j:longint;
begin
s:=0;
for j:=i to i+m-1 do
s:=s+a[j];
end;
begin
clrscr;
write(‘Nhap n,m: ‘);readln(n,m);
for i:=1 to n do
begin
write(‘Nhap phan tu thu ‘,i,’: ‘);readln(a[i]);
end;
for i:=1 to n-m+1 do
If s(i)>max then max:=s(i);
writeln(max);
readln
end.
Không dùng function:
uses crt;
var i,j,s,n,m,max:longint; a:array[1..10000]of longint;
begin
clrscr;
write(‘Nhap n,m: ‘);readln(n,m);
for i:=1 to n do
begin
write(‘Nhap phan tu thu ‘,i,’: ‘);readln(a[i]);
end;
for i:=1 to n-m+1 do
begin
s:=0;
for j:=i to i+m-1 do
s:=s+a[j];
If s>max then max:=s;
end;
writeln(max);
readln
end.
uses crt;
var a:array[1..1000] of longint;
i,j,n,m,vt:word;
t,max:longint;
begin
clrscr;
readln(n);
for i:=1 to n do read(a[i]);
readln;
readln(m);
for i:=1 to n-m+1 do
begin
for j:=i to i+m-1 do
t:=t+a[j];
if max<t then
begin
max:=t;
vt:=i;
end;
end;
for j:=i to i+m-2 do write(a[j],’;’);
write(a[i+m-1]);
readln;
end.