走迷宫1 bnu 1054
2013-12-01 18:24
218 查看
走迷宫是很有趣的一种游戏,能够锻炼人的记忆力和思维.现在,HK被困在一个迷宫里面了,请你帮助他找到一条最短的路径,能够让他走出迷宫.
迷宫使用一个N*M的矩阵来描述,矩阵中用'.'代表空格可以通行,用'*'代表障碍物,用'S'代表出发点,用'T'代表出口.例如下面的一个矩阵就描述了一个8*8的迷宫
.....T..
..*****.
......*.
*.***.*.
......*.
.****.*.
S..*....
........
每个字符代表1个格子,HK只能在格子间按上下左右的方向移动
每组数据第一行是两个正整数N和M(N,M<=100).
接着是一个N*M的矩阵.
View Code
迷宫使用一个N*M的矩阵来描述,矩阵中用'.'代表空格可以通行,用'*'代表障碍物,用'S'代表出发点,用'T'代表出口.例如下面的一个矩阵就描述了一个8*8的迷宫
.....T..
..*****.
......*.
*.***.*.
......*.
.****.*.
S..*....
........
每个字符代表1个格子,HK只能在格子间按上下左右的方向移动
Input
每个输入文件只包含一组输入数据.每组数据第一行是两个正整数N和M(N,M<=100).
接着是一个N*M的矩阵.
Output
如果HK能够走出迷宫,输出最少需要的步数;否则输出-1.Sample Input
8 8 .....T.. ..*****. ......*. *.***.*. ......*. .****.*. S..*.... ........
Sample Output
11 第一次queue,其实不难; <注意:不知道是OJ的问题还是什么,#define N 好像会 RE,以后还是少用的呵。>
#include<iostream> #include<queue> #include<cstring> using namespace std; const int maxn = 100 + 10; char a[maxn][maxn]; int vis[maxn][maxn],n,m; int ax[5]={-1,0,1,0}; int ay[5]={0,-1,0,1}; struct Thing { int x, y; int step; }str; Thing end,now; int bfs () { queue<Thing>que; que.push(str); while(!que.empty()) { now=que.front(); if(now.x==end.x&&now.y==end.y) { return now.step; } que.pop(); for(int i=0;i<4;i++) { Thing temp; temp.x=now.x+ax[i]; temp.y=now.y+ay[i]; temp.step=now.step+1; if(temp.x >=0 &&temp.y<n&&temp.y>=0&&temp.y<m && !vis[temp.x][temp.y] && a[temp.x][temp.y]!='*') { vis[temp.x][temp.y]=1; que.push(temp); } } } return -1; } int main () { while(cin >> n >> m) { memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin >> a[i][j]; if(a[i][j]=='S') { str.x=i; str.y=j; str.step=0; vis[i][j]=1; } if(a[i][j]=='T') { end.x=i; end.y=j; } } } //printf("-%d%d--%d%d-\n",str.x,str.y,end.x,end.y); cout << bfs() << endl; } return 0; }
View Code
相关文章推荐
- BNU 1054 - 走迷宫1
- BNU 走迷宫2
- bnu1055 走迷宫2
- bnu1054 杨辉三角 C语言版
- 迷宫求解
- 数据结构-stack栈应用(走迷宫)
- 迷宫问题 模拟队列 广度优先搜索
- CODE: 游乐园的迷宫
- poj 3984 迷宫问题(bfs)
- HDU 1272 小希的迷宫 并查集 (判断任意2个点是否有且仅有一条路径可以相通)
- poj 3984 迷宫问题
- Hrbust-1621 迷宫问题II(广搜+优先队列)
- 程序设计--迷宫问题
- 牛客Wannafly挑战赛10 A.小H和迷宫
- hdu 1272 小希的迷宫(并查集 最小生成树)
- Wannafly挑战赛10-A小h和迷宫
- bin神专题 迷宫问题
- Wannafly交流赛1-D:迷宫2(优先队列+BFS)
- 费用流——危险的迷宫maze
- [bzoj1054][BFS][移动玩具]