【宽搜】校园迷宫
2012-11-06 18:34
120 查看
题目:校园迷宫 rqnoj195
题目描述
总算期中考了,鄙人被教育局分配到了SY学校,当然是陪着很多人的。不知转了多少次车,总算到了。可惜的是,SY学校整个像个迷宫一样,就在门口贴了张学校地图。鄙人就开始研究地图了,但是学校错综复杂,等找到目的地,早就开考了。为此,鄙人取出随身携带的微型电脑(不知道从哪来的),向网上发去了求助书。注:只能往4个方向走:上、下、左、右。输入格式
第1行,二个数,N,M。接下来是一个N*M的矩阵,表示这个学校。(有N行,M列)。矩阵由2个数字组成。0:路;1:墙。路能走,墙不能走(这是基本常识。不过还是提醒一下,不然哪个牛又要飞檐走壁了)。
再是2行,第1行2个数X1,Y1表示校门口的坐标(即校门口在矩阵的第X1行,第Y1列)。第2行2个数X2,Y2表示鄙人的考场的坐标(即校门口在矩阵的第X2行,第Y2列)。
数据范围:0<M,N<=2000。0〈X1,X2〈=N,0〈Y1,Y2〈=M。
输出格式
一个数,表示最少要走的步数。如果走不到,则输出 No Answer!样例输入
5 51 1 1 1 1
1 1 1 0 0
1 0 0 0 1
0 0 1 0 0
1 1 1 0 1
4 1
5 4
样例输出
6这道题应该不用多说了吧。。。迷宫搜索的基础题目之一。。。由于数据较大 所以宽搜
Pascal Code
program rqnoj195; const maxq=2010*2010; maxm=2000+10; dx:array[1..4] of longint=(0,0,1,-1); dy:array[1..4] of longint=(1,-1,0,0); type tnode=record x,y:longint; step:longint; end; var n,m:longint; map:array[0..maxm,0..maxm] of longint; l,r:longint; q:array[0..maxq] of tnode; f:array[0..maxm,0..maxm] of boolean; first,target:tnode; procedure init; begin assign(input,'rqnoj195'); assign(output,'rqnoj195.out'); reset(input); rewrite(output); end; procedure outit; begin close(input); close(output); halt; end; procedure readdata; var i,j:longint; begin read(n,m); for i:=1 to n do for j:=1 to m do read(map[i,j]); read(target.x,target.y); read(first.x,first.y); end; procedure inq(var x:tnode); begin inc(r);r:=r mod maxq; inc(x.step); q[r]:=x; f[x.x,x.y]:=true; if (x.x=target.x)and(x.y=target.y) then begin writeln(x.step); outit; end; end; function outq:tnode; begin inc(l);l:=l mod maxq; exit(q[l]); end; procedure kuo(var node,newnode:tnode;i:longint); begin newnode:=node; with newnode do begin inc(x,dx[i]); inc(y,dy[i]); if (x<1)or(x>n)or(y<1)or(y>m) then newnode:=node; if map[x,y]=1 then newnode:=node; end; end; procedure main; var node,newnode:tnode; i:longint; begin fillchar(f,sizeof(f),0); first.step:=-1;//入队后加1为0 inq(first); while l<>r do begin node:=outq; for i:=1 to 4 do begin kuo(node,newnode,i); if not f[newnode.x,newnode.y] then inq(newnode); end; end; writeln('No Answer!'); end; begin init; readdata; main; outit; end.
相关文章推荐
- 校园迷宫(rqnoj195)
- RQNOJ 195校园迷宫(简单BFS)
- 校园迷宫
- 【图论】【RQNOJ】校园迷宫
- 校园迷宫-rqnoj-195
- RQNOJ 校园迷宫-宽度优先搜索
- 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)
- 【宽搜】校园迷宫
- 题目:校园迷宫
- 微信公众平台开发实例(琴岛学院校园之声) PHP开发 代码挂载SAE平台(一)
- 华为机试 迷宫最短路径
- 运营商校园“三国大战”加剧
- 腾讯2017年校园招聘笔试题第一题
- CSS校园的肮脏思想
- 网易2017校园招聘笔试题 优雅的点
- PPS2013校园招聘笔试题
- 深度优先和广度优先遍历迷宫
- 迅雷校园面试题
- BFS迷宫,水题
- 搜狐2012年校园招聘会笔试题解析