哪位大牛帮忙看一下?

为什么这样只有50分呢?

我看了题解后做的

var

n,m:integer;

f:array[-1..100,-1..100,-1..100]of integer;

a:array[-1..100,-1..100]of integer;

procedure init;

var

i,j:integer;

begin

readln(n,m);

fillchar(a,sizeof(a),0);

for i:=1 to n do

begin

for j:=1 to m do

read(a);

readln;

end;

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

end;

function work(a,b,c,d:integer):integer;

begin

if (a>b)and(a>c)and(a>d)then exit(a);

if (b>a)and(b>c)and(b>d)then exit(b);

if (c>a)and(c>b)and(c>d)then exit(c);

if (d>a)and(d>b)and(d>c)then exit(d);

if (a=b)and(b=c)and(c=d)then exit(a);

end;

procedure main;

var

i,j,k:integer;

begin

for i:=0 to m+n-1 do

for j:=1 to m do

for k:=j to m do

if (j=k)and(jm)then f:=0 else

f:=work(f,f,f,f)+a[j,i+2-j]+a[k,i+2-k];

writeln(f[m+n-1,m,m]);

end;

begin

init;

main;

end.

2 条评论

  • @ 2009-08-28 20:27:16

    ls的

    不是的

    是用步骤划分状态

    知道横坐标就会知道纵坐标

    所以两个都是1 to m这个是没问题的

  • @ 2009-08-28 11:44:45

    --

    数据中不一定是个正方形

    你是按正方形做的,

    n=m(不一定);

  • 1

信息

ID
1493
难度
5
分类
动态规划 点击显示
标签
递交数
6702
已通过
2504
通过率
37%
被复制
9
上传者