电子老鼠闯迷宫
来源:互联网 发布:唯一网络王宇杰简介 编辑:程序博客网 时间:2024/04/30 20:32
SSLGZ-1455-电子老鼠闯迷宫/mouse.pas
题意:
12×12方格图,找出一条自入口(2,9)到出口(11,8)的最短路径。
解题思路:
用深搜,首先判断哪个方向能走,再判断有没有出界,统计走的路程,如果找到了目标点就直接输出从起点到这的路程。
const maxn=12; wayn=4; dx:array[1..wayn] of integer=(-1,0,1,0); dy:array[1..wayn] of integer=(0,1,0,-1);var px,py,qx,qy,s,last:integer; a:array[0..maxn+1,0..maxn+1] of integer; father:array[1..maxn*maxn] of integer; state:array[1..maxn*maxn,1..2] of integer;procedure init; var i,j,n:integer; begin readln(n); read(px,py); readln(qx,qy); for i:=1 to n do begin for j:=1 to n do read(a[i,j]); readln; end; end;function check(x,y:integer):boolean; begin check:=true; if (x<1) or (x>12) or (y<1) or (y>12) then check:=false; if a[x,y]=1 then check:=false; end;procedure print(x:integer); begin if x=0 then exit; inc(s); print(father[x]); if x<>last then write('(',state[x,1],',',state[x,2],')->') else writeln('(',state[x,1],',',state[x,2],')') end;procedure bfs; var tail,head,k,i:integer; begin head:=0;tail:=1;state[1,1]:=px;state[1,2]:=py; father[1]:=0; repeat head:=head+1; for k:=1 to wayn do if check(state[head,1]+dx[k],state[head,2]+dy[k]) then begin tail:=tail+1; father[tail]:=head; state[tail,1]:=state[head,1]+dx[k]; state[tail,2]:=state[head,2]+dy[k]; a[state[tail,1],state[tail,2]]:=1; if (state[tail,1]=qx) and (state[tail,2]=qy) then begin s:=0; last:=tail; print(tail); writeln(s); tail:=0; end; end; until head>=tail; end;begin init; bfs;end.
1 0
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫
- 电子老鼠闯迷宫.cpp
- 电子老鼠闯迷宫 1455
- 电子老鼠闯迷宫 SSL1455
- (ssl1455)电子老鼠闯迷宫
- springmvc 与 Struts 2 比较
- Ubuntu上运行swift
- OC 学习回顾一
- 积累一些常用的功能的代码片段。持续更新
- 正版Minecraft的安装
- 电子老鼠闯迷宫
- 1.opencv中的绝对路径问题
- 殊珠子 php Excel文件导入 Spreadsheet_Excel_Reader
- iOS程序设计心得总结(三)应用层设计
- swift实现提示框第三方库:MBProgressHUD
- 希尔排序
- Three.js 添加阴影
- (一)Liferay-可配置portlet
- python学习记录--元组