最大和子矩阵
求元素之和最大的子方阵:在m×n (m,n ≤20)的正整数数字方阵中,找出一个p × q 的子 阵(1≤p≤m, 1≤q≤n )使其元素之和最大。例如,下面5 × 4 的数字阵中,元素之和最大的一个2 × 3子阵。
var a:array[1..20,1..20] of integer;
m,n,p,q,i,j,max,p1,q1,s,i1,j1:integer;
begin
for i:=1 to 20 do
for j:=1 to 20 do
a[i,j]:=0;
readln(m,n);
for i:=1 to m do
begin
for j:=1 to n do read(a[i,j]);
readln;
end;
readln(p,q);
max:=0;
for i:=1 to m-p+1 do
for j:=1 to n-q+1 do
begin
s:=0 ;
for i1:=i to p+i-1 do
for j1:=j to q+j-1 do
s:=s+a[i1,j1] ;
if s>max then
begin
max:=s ;
p1:=i;
q1:=j;
end;
end;
for i:=p1 to p1+p-1 do
begin
for j:=q1 to q1+q-1 do
write(a[i,j]:3);
writeln;
end;
end.