不是VIP会员,不能显示答案

题目解答

题目:
最大和子矩阵
求元素之和最大的子方阵:在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.
考点:
分析:
解答:
评论:
老师: