算法专题 最大连续子段和 普及组【2014】四2 Pascal版
const SIZE = 100; var matrix: array [1..SIZE, 1..SIZE] of integer; rowsum: array [1..SIZE, 0..SIZE] of integer; // rowsum[i, j]记录前 i 行前 j 个数的和 m, n, i, j, first, last, area, ans: integer; begin read(m, n); for i := 1 to m do for j := 1 to n do read(matrix[i, j]); ans := matrix[1,1];// for i := 1 to m do rowsum[i,0]:=0 ; for i := 1 to m do for j := 1 to n do rowsum[i, j] := rowsum[i,j-1]+matrix[i,j] ; for first := 1 to n do for last := first to n do begin area:=0 ; for i := 1 to m do begin area := area + rowsum[i,last]-rowsum[i,first-1] ; if (area > ans) then ans := area; if (area < 0) then area := 0; end; end; writeln(ans); end.
5 5
1 2 3 4 5
1 2 3 4 5
1 2 -100 4 5
1 2 3 4 5
1 2 3 4 5
转载于:https://www.cnblogs.com/qilinart/articles/4858184.html