POJ 3984 迷宫问题
来源:互联网 发布:2016网络暴力案例 编辑:程序博客网 时间:2024/05/16 07:43
迷宫问题
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 15397 Accepted: 9144
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的地图,要求从(0,0)到(4,4)的最短路径并且将路径打印出来。“1”表示墙壁,“0”表示路,每次只能上下左右的走。
分析:这是一道很基础的BFS的题目,比较麻烦的地方记录路径。在这边的话,我开了一个结构,里面有x表示x轴,y表示y轴,step表示步数,然后还有一个队列p,用来储存到该点的路径,当到达(4,4)的时候,再从头到尾将路径输出出来。
代码:
#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<queue>using namespace std;int a[5][5];int id[5][5];struct node{ int x,y; int step; queue<int> p;};int dir[4][2]={-1,0,0,-1,0,1,1,0};bool judge(int x,int y){ if(x<0||x>5||y<0||y>5) return false; return true;}void bfs(){ memset(id,0,sizeof(id)); node t1,t2,t3; queue<node> q; t1.x=0; t1.y=0; t1.step=0; t1.p.push(0); t1.p.push(0); id[0][0]=1; q.push(t1); while(q.empty()==0) { t2=q.front(); q.pop(); if(t2.x==4&&t2.y==4) { while(t2.p.empty()==0) { int x=t2.p.front(); t2.p.pop(); int y=t2.p.front(); t2.p.pop(); printf("(%d, %d)\n",x,y); } } for(int i=0;i<4;i++) { t3.x=t2.x+dir[i][0]; t3.y=t2.y+dir[i][1]; if(id[t3.x][t3.y]==0&&judge(t3.x,t3.y)&&a[t3.x][t3.y]==0) { t3.p=t2.p; t3.p.push(t3.x); t3.p.push(t3.y); t3.step=t2.step+1; id[t3.x][t3.y]=1; q.push(t3); } } }}int main(){ for(int i=0;i<5;i++) { for(int j=0;j<5;j++) scanf("%d",&a[i][j]); } bfs(); return 0;}
阅读全文
0 0
- poj 3984 迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- Poj 3984 迷宫问题
- 迷宫问题 poj 3984
- poj 3984迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- poj 3984- 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- poj 3984:迷宫问题
- POJ-3984-迷宫问题
- POJ 3984 迷宫问题
- poj 3984迷宫问题
- POJ 3984 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- ThinkPhp学习笔记-如何定义Template模板路径
- ACM Contest and Blackout
- C#相对路径转绝对路径,绝对路径转相对路径
- Codeforces Round #422 (Div. 2) C. Hacker, pack your bags!
- 抽象类、接口和内部类(下)
- POJ 3984 迷宫问题
- Java-Java反射
- HDU 2553 N皇后问题
- 51nod 1238 最小公倍数之和 V3
- MFC exe替换大、中、小图标方法
- 《深入探索Android热修复技术原理》安卓热修复原理宝典出炉,阿里技术大牛联袂推荐
- Fix TypeError: Cannot read property 'emit' of undefined after upgrade to 2.0.0 @ionic/cli-plugin-ion
- Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
- API文档 、 字符串基本操作