讨论 / 葡萄干问题程序找错
sys 2010-09-14 05:11:00
点我顶贴 收藏 删除
prOgram gsd;

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. 神牛们:帮忙看看吧!怎没运行结果是没有输出?帮帮弱菜吧!

查看更多回复
提交回复