广搜练习(一)
2016-02-06 16:07
253 查看
1、 迷宫问题(maze.pas/.in/.out)
【问题描述】
0 1 1 1 0 1 1 1
1 0 1 0 1 0 1 0
0 1 0 0 1 1 1 1
0 1 1 1 0 0 1 1
1 0 0 1 1 0 0 0
0 1 1 0 0 1 1 0
如上所示的迷宫图,其中1表示不通,0表示通,处于迷宫中的每个位置都可以有 8个方向探索可行路径前进,假设入口设在最左上角,出口位置设在最右下角,编写一个程序,找出一条从入口到出口的最短路径。注意,由于搜索方案可能不唯一,我们假设搜索的顺序优先从所在点的右侧开始搜索,然后搜索右下方,然后是正下方,依次搜索到该点的右上方,这样可以确保输出方案和测试数据一致。
输入格式
第一行两个整数m和n,表示行和列(n<=10)
第二行开始,每行n个0或1共m行,0表示通,1表示不通。
输出格式
输出一条最短的路径
输入样例
6 8
0 1 1 1 0 1 1 1
1 0 1 0 1 0 1 0
0 1 0 0 1 1 1 1
0 1 1 1 0 0 1 1
1 0 0 1 1 0 0 0
0 1 1 0 0 1 1 0
输出样例
(1,1)-->(2,2)-->(3,3)-->(3,4)-->(4,5)-->(4,6)-->(5,7)-->(6,8)
参考程序
【问题描述】
0 1 1 1 0 1 1 1
1 0 1 0 1 0 1 0
0 1 0 0 1 1 1 1
0 1 1 1 0 0 1 1
1 0 0 1 1 0 0 0
0 1 1 0 0 1 1 0
如上所示的迷宫图,其中1表示不通,0表示通,处于迷宫中的每个位置都可以有 8个方向探索可行路径前进,假设入口设在最左上角,出口位置设在最右下角,编写一个程序,找出一条从入口到出口的最短路径。注意,由于搜索方案可能不唯一,我们假设搜索的顺序优先从所在点的右侧开始搜索,然后搜索右下方,然后是正下方,依次搜索到该点的右上方,这样可以确保输出方案和测试数据一致。
输入格式
第一行两个整数m和n,表示行和列(n<=10)
第二行开始,每行n个0或1共m行,0表示通,1表示不通。
输出格式
输出一条最短的路径
输入样例
6 8
0 1 1 1 0 1 1 1
1 0 1 0 1 0 1 0
0 1 0 0 1 1 1 1
0 1 1 1 0 0 1 1
1 0 0 1 1 0 0 0
0 1 1 0 0 1 1 0
输出样例
(1,1)-->(2,2)-->(3,3)-->(3,4)-->(4,5)-->(4,6)-->(5,7)-->(6,8)
const dx:array[1..4] of integer=(0,1,0,-1); dy:array[1..4] of integer=(1,0,-1,0); var m,n,i,j,x1,y1,x2,y2,h,t,t2,ans,x,y:integer; map:array[1..100,1..100] of integer; xx,yy,pre:array[1..100] of integer; begin assign(input,'turn.in'); reset(input); assign(output,'turn.out'); rewrite(output); readln(n,m); for i:=1 to n do begin for j:=1 to m do read(map[i,j]); readln; end; readln(x1,y1,x2,y2); h:=0; t:=1; ans:=0; t2:=1; xx[1]:=x1; yy[1]:=y1; while h<t do begin inc(h); for i:=1 to 4 do begin x:=xx[h]+dx[i]; y:=yy[h]+dy[i]; while (x<=n)and(y<=m)and(x>=1)and(y>=1)and((map[x,y]=0)or(map[x,y]=2)) do begin if map[x,y]=0 then begin inc(t); xx[t]:=x; yy[t]:=y; map[x,y]:=2; pre[t]:=h; if (x=x2)and(y=y2) then begin writeln(ans); halt; end; end; x:=x+dx[i]; y:=y+dy[i]; end; end; if h=t2 then begin inc(ans); t2:=t; end; end; end.
参考程序
相关文章推荐
- UVa--10976 Fractions Again(枚举)
- hdu1224 Free DIY Tour (dp)
- 业务流程节点信息提示
- 泛型与集合类型
- 业务流程节点信息构件
- 寻找山顶
- javascript+css3 实现动态按钮菜单特效
- JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)
- JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)
- POJ 2104 K-th Number
- 【Android】5.0 第5章 常用基本控件--本章示例主界面
- poj--2236--Wireless Network(并查集)
- Java [Leetcode 257]Binary Tree Paths
- poj--2236--Wireless Network(并查集)
- 短信验证码服务
- 鸡兔同笼问题
- 三消游戏核心逻辑的一种实现
- 二叉树(二)
- 【玩转cocos2d-x之四十】怎样在Cocos2d-x 3.0中使用opengl shader?
- 【HDOJ】4601 Letter Tree