2017.8.7测试 题四 WJ的逃离

WJ的逃离

escape

 

【题目描述】

当WJ醒来时,发现自己被困在一个地图的左上角,幸好WJ有张图,并了解到出口正是迷宫的右下角,至少有一条路径可以到达出口。

整个地图有些地方会有障碍(保证左上角右下角没有),WJ可以快速奔跑,只是需要拐弯时令人很不爽。为了保持心情愉悦,WJ想知道最少需要几次转弯。

 

【输入数据】

第一行两个数r,c表示地图大小

接下来r行,每行c个字符,‘*’代表此处有障碍,‘0’代表空地。

 

【输入样例】 

 escape.in

2 5

0*000

000*0

 

【输出格式】

一个数,表示最少需要几次转弯。数据保证有解。

 

【输出样例】 

 escape.out

4

 

【数据范围】

       对于20%的数据,r、c≤10;

       对于40%的数据,r、c≤100;

       对于100%的数据,r、c≤500。

题解(以后要习惯这么写了,洛谷不收有注释没结题报告的了):本题其实是个广搜,因为广搜是最快找到的路是最短的路,所以只要一找到就输出就行了。

const
 dx:array [1..4] of integer=(-1,0,1,0);
 dy:array [1..4] of integer=(0,1,0,-1);
var
 a,v:array[0..500,0..500]of boolean;
 f:array[0..250000]of longint;
 b:array[0..250000,1..2]of longint;
 r,c,i,j:longint;
 z:char;
function check(x,y:longint):boolean;
begin
 if (x<1) or (x>r) or (y<1) or (y>c) or (a[x,y]) then exit(false);//判断有没有越界或这个地方能不能走(障碍)
 exit(true);
end;
procedure try;
var
 i,h,t,x,y:longint;
begin
 h:=0;t:=1;
 b[1,1]:=1;//一开始从(1,1)开始走(此为x坐标)
 b[1,2]:=1;//这就是y啦~
 f[1]:=0;//一开始不用转弯
 while h
//附本人写的第一篇广搜博客,有超多注释,也算是模板了吧:传送门

你可能感兴趣的:(竞赛(测试)题)