讨论 / 求神犇解答 为什么我的程序不对
wjltz 2011-08-18 04:24:00
点我顶贴 收藏 删除
program lt1;

const qx:array[1..4] of longint=(0,-1,0,1);

qy:array[1..4] of longint=(1,0,-1,0); 前的坐标

zx:array[1..4] of longint=(-1,0,1,0);

zy:array[1..4] of longint=(0,-1,0,1); 左

yx:array[1..4] of longint=(1,0,-1,0);

yy:array[1..4] of longint=(0,1,0,-1); 右

hx:array[1..4] of longint=(0,1,0,-1);

hy:array[1..4] of longint=(-1,0,1,0); 后

z1:array[1..4] of longint=(2,3,4,1); 方向

y1:array[1..4] of longint=(4,1,2,3);

h1:array[1..4] of longint=(3,4,1,2);

var a:array[0..101,0..101] of char;

f:array[0..101,0..101,1..4] of longint;

n,m,ans,v,x,y,l,r,i,j,k:longint;

procedure try(x,y,v,fx:longint);

begin

if (f[x,y,fx]>v) and (f[x,y,fx]>=0) then exit;

if v<0 then v:=0;

f[x,y,fx]:=v;

if a[x+qx[fx],y+qy[fx]]<>'.' then try(x+qx[fx],y+qy[fx],v+1,fx)

else begin

if a[x+zx[fx],y+zy[fx]]<>'.' then try(x,y,v-35,z1[fx]);

if a[x+yx[fx],y+yy[fx]]<>'.' then try(x,y,v-40,y1[fx]);

if (a[x+hx[fx],y+hy[fx]]<>'.') and (a[x+zx[fx],y+zy[fx]]='.') and (a[x+yx[fx],y+yy[fx]]='.') then try(x,y,0,h1[fx]);

end;

end;

begin

readln(n,m,v);

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

for i:=0 to n+1 do

for j:=0 to m+1 do

begin

a[i,j]:='.';

for k:=1 to 4 do

f[i,j,k]:=-1;

end;

for i:=1 to n do

begin

for j:=1 to m do

begin

read(a[i,j]);

if a[i,j]='F' then begin

x:=i;

y:=j;

end;

if (a[i,j]<>'.') and (a[i,j]<>'#') and (a[i,j]<>'F') then begin

l:=i;

r:=j;

end;

end;

readln;

end;

if a[l,r]='E' then try(l,r,v,1);

if a[l,r]='W' then try(l,r,v,3);

if a[l,r]='N' then try(l,r,v,2);

if a[l,r]='S' then try(l,r,v,4);

ans:=0;

for i:=1 to 4 do

if f[x,y,i]>ans then ans:=f[x,y,i];

writeln(ans);

end.

#1 wjltz@2011-08-18 02:02:00
回复 删除
读错题了………………
#2 戰魂@2011-08-18 04:24:00
回复 删除
题错了

读错了

查看更多回复
提交回复