HDU 3984 迷宫问题
来源:互联网 发布:sql insert多条记录 编辑:程序博客网 时间:2024/05/20 17:08
定义一个二维数组:
它表示一个迷宫,其中的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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。
左上角到右下角的最短路径,格式如样例所示。
0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0
(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
题意就不用解释了;
思路:求最短路径直接bfs一下就可以了,但是题目中还要求将路径输出,所以我就用了结构体,结构体里边装的是一个节点的坐标还要存一下他的前驱(即上一个节点的标号),这样找到重点后回溯输出节点的坐标了
ac:代码
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;int cnx[4]={0,-1,0,1};int cny[4]={1,0,-1,0};bool vis[10][10];int a[6][6];struct node{ int x;int y; int last;}que[100];void print(int k){ int t=que[k].last; if(t==-1) {printf("(0, 0)\n"); return; } print(t); printf("(%d, %d)\n",que[k].x,que[k].y);}void bfs(int x,int y){ memset(vis,0,sizeof(vis)); int head=0; int tail=0; que[tail].x=x; que[tail].y=y; que[tail].last=-1; vis[x][y]=1; tail++; while(head<tail) { int m=que[head].x; int n=que[head].y; if(m==4&&n==4) { print(head); return; } for(int i=0;i<4;i++) { int m1=m+cnx[i]; int n1=n+cny[i]; if(m1<0||m1>4||n1<0||n1>4||vis[m1][n1]==1||a[m1][n1]==1) continue; que[tail].x=m1; que[tail].y=n1; que[tail].last=head; tail++; vis[m1][n1]=1; } head++; }}int main(){ for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { scanf("%d",&a[i][j]); } } bfs(0,0); return 0;}
0 0
- HDU 3984 迷宫问题
- HDU 1010 迷宫问题
- poj 3984 迷宫问题
- poj 3984 迷宫问题
- POJ-3984-迷宫问题
- Poj 3984 迷宫问题
- 迷宫问题 poj 3984
- poj 3984迷宫问题
- poj 3984 迷宫问题
- ACM 3984 迷宫问题
- POJ-3984-迷宫问题
- BFS | 3984 | 迷宫问题
- poj 3984- 迷宫问题
- POJ 3984 迷宫问题
- poj 3984 迷宫问题
- poj 3984:迷宫问题
- POJ-3984-迷宫问题
- POJ 3984 迷宫问题
- RecyclerView 结合 卡片翻转效果
- CODE【VS】1384 黑色星期五(计算某一天是星期几的公式)
- java编程思想读书笔记-第四章初始化和清除
- [JVM]Java内存区域与内存溢出异常
- JS面向对象编程--第二章 数据类型,数组,循环,条件表达式
- HDU 3984 迷宫问题
- 输入年月日时分秒,输出该年月日时分秒的下一秒
- 【机器学习】使用python实现ANN
- 机器学习中关于正则项的一些摘抄
- 三角形面积=SQRT(S*(S-a)*(S-b)*(S-c)) 其中S=(a+b+c)/2,a、b、c为三角形的三边。 定义两个带参的宏,一个用来求area, 另一个宏用来求S。 写程序,在程序中用带
- [BZOJ2131]免费的馅饼(DP+树状数组)
- 以下设计模式中,哪一项不属于结构性模式
- Shell环境变量汇总
- HDU