讨论 / 谁能把这道题pascal的程序发下啊
b474908647 2010-06-30 21:45:00
点我顶贴 收藏 删除
RT

谢谢啦

不知道自己哪错了?

#1 xxwzy@2009-03-02 02:27:00
回复 删除
var a,f:array[-1..1000,-1..1000]of longint;

i,j,n,m,mi:longint;

begin

readln(n,m);

fillchar(a,sizeof(a),-1);

for i:=1 to n do

begin

for j:=1 to m do read(a[i,j]);

readln;

end;

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

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

for i:=2 to n do

for j:=2 to m do

begin

if a[i,j]=-1 then continue;

if (f[i-1,j-2]=0)and(f[i-2,j-1]=0) then continue;

if f[i-1,j-2]>f[i-2,j-1]

then f[i,j]:=f[i-1,j-2]+a[i,j]

else f[i,j]:=f[i-2,j-1]+a[i,j];

end;

mi:=0;

for i:=1 to n do

if f[i,m]>mi then mi:=f[i,m];

for i:=1 to m do

if f[n,i]>mi then mi:=f[n,i];

if mi>0 then writeln(mi) else writeln(’cannot arrive.’);

end.

#2 L.Lawliet@2010-06-30 21:45:00
回复 删除
program SYC{循环版};

const maxn=1000;

var a:array[0..maxn,0..maxn]of longint;

f:array[0..maxn,0..maxn]of longint;

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

{main}

begin

max:=-1;

fillchar(a,sizeof(a),-1);

readln(n,m);

for i:=1 to n do

begin

for j:=1 to m do

read(a[i,j]);

readln;

end;

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

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

for i:=2 to n do

for j:=2 to m do

begin

if a[i,j]=-1 then continue;

if (f[i-1,j-2]=0)and(f[i-2,j-1]=0)then continue;

if f[i-1,j-2]>f[i-2,j-1] then f[i,j]:=f[i-1,j-2]+a[i,j]

else f[i,j]:=f[i-2,j-1]+a[i,j];

if ((i=n)or(j=m))and(f[i,j]>max)then max:=f[i,j];

end;

if max=-1 then writeln('cannot arrive.')else writeln(max);

end.

查看更多回复
提交回复