POJ 3984 迷宫问
来源:互联网 发布:celery python廖雪 编辑:程序博客网 时间:2024/05/16 08:27
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 16370 Accepted: 9783
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)
Source
BFS。搜索出来的路径一定是最小路径。
#include<stdio.h>int maze[7][7] = {0};int used[7][7] = {0};int finished = 0;struct point{int prei;int prej;int i;int j;};struct direct{int i;int j;}dir[4] = {-1, 0, 0, 1, 1, 0, 0, -1};struct point queue1[30];struct point stack1[30];struct point stack2[30];int front1 = 0;int rear1 = 0; int top1 = -1;int top2 = -1;void bfs(){int i, j;int d;int newi, newj;struct point tmp = {0, 0, 1, 1};struct point tmp2;used[1][1] = 1;queue1[rear1 ++] = tmp;while(front1 != rear1 && !finished){tmp = queue1[front1 ++];stack1[++ top1] = tmp;for(d = 0; d < 4; d ++){newi = tmp.i + dir[d].i;newj = tmp.j + dir[d].j;if(!used[newi][newj] && !maze[newi][newj]){used[newi][newj] = 1;tmp2.i = newi;tmp2.j = newj;tmp2.prei = tmp.i;tmp2.prej = tmp.j;queue1[rear1 ++] = tmp2;if(newi == 5 && newj == 5){finished = 1;stack1[++ top1] = tmp2;break;}}}}}int main(){int i, j;int prei, prej;struct point tmp;for(i = 0; i < 7; i ++){for(j = 0; j < 7; j ++){if(i == 0 || i == 6) maze[i][j] = 1;else if(j == 0 || j == 6) maze[i][j] = 1;else continue;}}for(i = 1; i <= 5; i ++){for(j = 1; j <= 5; j ++)scanf("%d", &maze[i][j]);}bfs();while(top1 != -1){if(stack1[top1].i == prei && stack1[top1].j == prej || stack1[top1].i == 5 && stack1[top1].j == 5){tmp = stack1[top1 --];stack2[++ top2] = tmp;prei = tmp.prei;prej = tmp.prej;}else{top1 --;}}while(top2 != -1){printf("(%d, %d)\n", stack2[top2].i - 1, stack2[top2].j - 1);top2 --;}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 迷宫问题
- First Unique Character in a String
- 【bzoj1854】[Scoi2010]游戏
- Java线程(一)
- POJ 2104 划分树
- [Scoi2010]游戏
- POJ 3984 迷宫问
- iOS 如何查看app提交审核是否使用广告标识符(IDFA)
- Git客户端 TortoiseGit(Windows系统)的使用及连接GitHub
- Scala 学习笔记(一)
- js事件代理
- [uoj228]基础数据结构练习题 解题报告
- qt之QSqlQuery
- 作用域和作用域链
- 持续集成环境搭建