- 传纸条
- 2009-08-27 22:21:34 @
为什么这样只有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 条评论
-
RayXie LV 8 @ 2009-08-28 20:27:16
ls的
不是的
是用步骤划分状态
知道横坐标就会知道纵坐标
所以两个都是1 to m这个是没问题的
-
2009-08-28 11:44:45@
--
数据中不一定是个正方形
你是按正方形做的,
n=m(不一定);
- 1