var a:array[1..1000,1..1000] of longint;
w, f:array[1..100,1..100,1..100,1..100] of longint;
i,j,k,l:longint;
lx,ly,m,n,j1,i1:longint;
function max(a,b:longint):longint;
begin if a<b then exit(a) else exit(b) end;
procedure init;
begin
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
read(a[i,j]);
readln;
end;
for i:=1 to n do
for j:=1 to m do
w[i,j,i,j]:=a[i,j];
for lx:=0 to n-1 do
for ly:=0 to m-1 do
for i:=1 to n-lx do
for j:=1 to m-ly do
if (lx<>0) or (ly<>0) then begin
k:=i+lx;
l:=j+ly;
if lx=0 then w[i,j,k,l]:=w[i,j,k,l-1]+a[i,l] else
w[i,j,k,l]:=w[i,j,k-1,l]+w[k,j,k,l];
end;
end;
begin
init;
filldword(f,sizeof(f) div 4 ,maxlongint div 2);
for i:=1 to n do
for j:=1 to m do
f[i,j,i,j]:=0;
for lx:=0 to n-1 do
for ly:=0 to m-1 do
for i:=1 to n-lx do
for j:= 1 to m-ly do
if (lx<>0) or(ly<>0) then
begin
k:=i+lx;l:=j+ly;
for i1:=i to k-1 do
f[i,j,k,l]:=max(f[i,j,k,l],f[i,j,i1,l]+f[i1+1,j,k,l]+w[i,j,k,l]);
for j1:=j to l-1 do
f[i,j,k,l]:=max(f[i,j,k,l],f[i,j,k,j1]+f[i,j1+1,k,l]+w[i,j,k,l]);
end;
writeln(f[1,1,n,m]);
end.
end. 神牛们:帮忙看看吧!怎没运行结果是没有输出?帮帮弱菜吧!