讨论 / 哪里错了?
wjzzm 2009-03-15 02:28:00
点我顶贴 收藏 删除
program s1;

var f:array[0..100,0..50,0..50]of qword;

a:array[0..50,0..50]of longint;

i,j,k,l,n,m:longint;

function max(a,b:qword):qword;

begin

if a>b then exit(a)

else exit(b);

end;

begin

//assign(input,’message.in’);

//reset(input);

//assign(output,’message.out’);

//rewrite(output);

read(n,m);

for i:=1 to n do

for j:=1 to m do

read(a[i,j]);

fillchar(f,sizeof(f),0);

f[2,1,1]:=a[1,1];

for k:=1 to n+m do

for i:=1 to k-1 do

for j:=1 to k-1 do

if (i<>j) or ((i=j) and (k=n+m)) then

begin

f[k,i,j]:=max(f[k,i,j],f[k-1,i-1,j-1]+a[i,k-i]+a[j,k-j]);

f[k,i,j]:=max(f[k,i,j],f[k-1,i,j-1]+a[i,k-i]+a[j,k-j]);

f[k,i,j]:=max(f[k,i,j],f[k-1,i-1,j]+a[i,k-i]+a[j,k-j]);

f[k,i,j]:=max(f[k,i,j],f[k-1,i,j]+a[i,k-i]+a[j,k-j]);

end;

write(f[n+m,n,n]);

//close(input);

//close(output);

end.

查看更多回复
提交回复