Найти непрерывный участок из 10 элементов, сумма которых максимальна - Pascal
Формулировка задачи:
Здравствуйте, вроде написал код, но ничего не могу понять, выходит лажа. Прога состоит из 3 этапов:
1. вводим 2 массива
2. складываем
3. Надо найти непрерывный участок из 10 элементов, сумма которых максимальна
Первые 2 пункта сделал без проблем, а вот с 3 никак не могу разобраться, помогите пожалуйста, ниже собственно сам код программы:
program a1;
uses crt;
var
a,b,sum,mas: array [1..20,1..20] of integer;
m,n,i,j,s1,s2,s,i1,j1,j2: integer;
begin
clrscr;
write('Vvedite kolichestvo strok matric: ');
readln(n);
If (n>0) and (n<20) then
begin
write('Vvedite kolichestvo stolbcov matric: ');
readln(m);
If (m>0) and (m<20) then
begin
begin
randomize;
writeln;
writeln ('matrica a:');
for i:=1 to n do
begin
writeln;
for j:=1 to m do
begin
a[i,j]:=random(10);
write(a[i,j],' ');
end;
end;
writeln;
writeln;
writeln('matrica b:');
for i:=1 to n do
begin
writeln;
for j:=1 to m do
begin
b[i,j]:=random(10);
write(b[i,j],' ');
end;
end;
end;
begin
writeln;
writeln;
writeln('Summa: ');
for i:=1 to n do
begin
writeln;
for j:=1 to m do
begin
sum[i,j]:=a[i,j]+b[i,j];
write(sum[i,j],' ');
end;
end;
end;
end
else
Writeln ('Vvedite znachenie ot 1 do 20');
end
else
Writeln (' Vvedite znachenie ot 1 do 20');
Writeln;
Writeln;
Writeln ('Neprerivniy uchastok is 10 elementov:');
Writeln;
s1:=-1;
for i:=1 to n do begin
s:=0;
s2:=-1;
for j:=1 to m do begin
Inc(s,mas[i,j]);
if j>=10 then begin
if s>s1 then begin s1:=s; i1:=i; j1:=j-9; end;
if s>s2 then begin s2:=s; j2:=j-9; end;
Dec(s,mas[i,j-9]);
end
end;
Writeln ('Uchastok s ',j2,' do ',j2+9,' - imeet maximalnuyu summe elementov= ',s2);
end;
Writeln;
Writeln ('Uchastok s ',i1,j1, ' do ',j1+9,' - imeet maximalnuyu summu elementov po vsey matrice= ',s1);
readkey;
end.Решение задачи: «Найти непрерывный участок из 10 элементов, сумма которых максимальна»
textual
Листинг программы
Writeln ('Uchastok s ',j2,' do ',j2+9,' - imeet maximalnuyu summe elementov= ',s2);
Объяснение кода листинга программы
Writeln: это процедура вывода текста в консоль.'Uchastok s ',j2,' do ',j2+9,' - imeet maximalnuyu summe elementov= ': строка, которая будет выведена в консоль. В этой строке используются различные переменные и операции.j2: это переменная, предположительно обозначающая начальный индекс участка из 10 элементов.j2+9: это операция сложения с переменнойj2, предположительно для получения конечного индекса участка из 10 элементов.s2: это переменная, предположительно обозначающая сумму элементов на участке.