讨论 / 广搜不行吗?..波啊
lizhixin 2008-09-12 05:17:00
点我顶贴 收藏 删除
状态题目:冰原探险

状态编号: [查看该题]

状态: Unaccepted

测评机: Virmain[1]

得分: 0分

提交日期: 2008-5-21 21:46:00

有效耗时: 该状态没有记录

测试结果1: 运行错误|普通保护错误

测试结果2: 测试结果错误.错误结果为:0

正确结果应为:13

测试结果3: 运行错误|普通保护错误

测试结果4: 运行错误|普通保护错误

测试结果5: 无输出|运行超时

测试结果6: 运行错误|普通保护错误

测试结果7: 运行错误|普通保护错误

测试结果8: 运行错误|普通保护错误

测试结果9: 运行错误|普通保护错误

测试结果10: 测试结果错误.错误结果为:0

正确结果应为:801

提交代码:

program gogogo;

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

dy:array[1..4]of integer=(0,1,0,-1);

var g:array[0..5001,0..5001]of longint;

you:array[0..5001,0..5001]of boolean;

my,mx,x1,x2,y1,y2,fik,w,i,i1,j1,xn,yn,ke,n,xi,yi,xj,yj:longint;

x,y:array[0..10000]of integer;

begin

my:=0;mx:=0;

readln(n);

readln(x1,y1);if x1>mx then mx:=x1;if y1>my then my:=y1;

readln(x2,y2);if x2>mx then mx:=x2;if y2>my then my:=y2;

for i:=1 to n do

begin

readln(xi,yi,xj,yj);

if xi>mx then mx:=xi;if yi>my then my:=yi;

if xj>mx then mx:=xj;if yj>my then my:=yj;

for i1:=xi to xj do

for j1:=yi to yj do you[i1,j1]:=true;

end;

x[0]:=x1;

y[0]:=y1;g[x1,y1]:=1;

i:=0;ke:=0;

repeat

for w:=1 to 4 do

begin

fik:=0;

xn:=x[i]+dx[w];

yn:=y[i]+dy[w];

if (xn=x2) and (yn=y2) then begin writeln(g[x[i],y[i]]);exit;end;

if you[xn,yn] then continue;

if not((xn<=mx) and (yn<=my) and (xn>0) and (yn>0)) then continue;

while not you[xn+dx[w],yn+dy[w]] do

begin

xn:=xn+dx[w];yn:=yn+dy[w];

if (xn=x2) and (yn=y2) then

begin writeln(g[x[i],y[i]]);exit;end;

if not((xn+dx[w]<=mx) and (yn+dy[w]<=my) and (xn+dx[w]>0) and (yn+dy[w]>0)) then

begin

fik:=1;

break;

end;

end;

if fik=1 then continue;

{ru dui:}

if g[xn,yn]=0 then

begin

g[xn,yn]:=g[x[i],y[i]]+1;

inc(ke);

x[ke]:=xn;y[ke]:=yn;

end;

end;

inc(i);

until i>ke;

if i>ke then writeln(0);

end.

#1 lizhixin@2008-05-21 06:55:00
回复 删除
请问地图到底多大,没给边界啊

我这个是啥错?

#2 不做寻常人@2008-09-12 05:17:00
回复 删除
没有边界.....用地图矩阵是做不出来的....
查看更多回复
提交回复