poj_3984迷宫问题
来源:互联网 发布:暗黑3数据库 编辑:程序博客网 时间:2024/05/16 01:37
迷宫问题
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5387 Accepted: 3066
Description
定义一个二维数组:
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
Input
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
Output
左上角到右下角的最短路径,格式如样例所示。
Sample Input
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
Sample Output
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
记录前驱,最后从(5,5)返回值(1,1)输出.
#include<iostream>#include <cstring>#include <queue>#include <cstdio>using namespace std;const int MAXN = 10;int maps[MAXN][MAXN];int visited[MAXN][MAXN];int moves[4][2] = {-1,0,1,0,0,-1,0,1};int ans;struct Point{int x;int y;int step;};queue<Point>Q;Point pre[MAXN][MAXN],path[30];void BFS(){while(!Q.empty())Q.pop();Point a,b;a.x = 0;a.y = 0;a.step = 0;visited[0][0] = 1;Q.push(a);while(!Q.empty()){a = Q.front();Q.pop();if(a.x==4&&a.y==4) {break;}for(int i=0;i<4;i++){b.x = a.x + moves[i][0];b.y = a.y + moves[i][1];if(b.x>=0&&b.y<5&&a.x>=0&&a.y<5&&!visited[b.x][b.y]&&!maps[b.x][b.y]){pre[b.x][b.y] = a;visited[b.x][b.y] = 1;b.step = a.step + 1;Q.push(b);}}}ans = a.step;for(int i=ans;i>=0;i--){path[i] = a;a = pre[a.x][a.y];}for(int i=0;i<=ans;i++){printf("(%d, %d)\n",path[i].x,path[i].y);}}int main(){freopen("in.txt","r",stdin);int i,j;memset(pre,0,sizeof(pre));memset(maps,0,sizeof(maps));memset(visited,0,sizeof(visited));for(i=0;i<5;i++){for(j=0;j<5;j++){cin>>maps[i][j];}}BFS();//cout<<ans<<endl;}
- poj_3984 迷宫问题
- poj_3984迷宫问题
- K_迷宫问题(POJ_3984)
- POJ_3984经典迷宫问题
- POJ_3984 迷宫问题(广搜)
- Poj_3984走迷宫(广搜)
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题...
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 幼儿睡午觉别超1小時 会直接影响心理
- Android 学习笔记 Thread (一) android线程
- struts2之开发模式(devMode)
- intent-filter 之 data 「scheme, host, port, mimeType, path, pathPrefix, pathPattern」
- 你真的了解分层架构吗?——写给被PetShop"毒害"的朋友们
- poj_3984迷宫问题
- Place name Memo
- Android中的monkey用法
- WP8开发: Windows Phone 7.X 与 Windows Phone 8 的区别
- 设置vc2005为debug调试器
- C#提高知识 ADO.NET实体数据模型(1)
- Google笔试题,关于机器分配任务的顺序
- 求帮助啊啊
- 依赖注入那些事儿——DI与IoC