POJ 3984 迷宫问题
来源:互联网 发布:莆田高仿鞋淘宝店 编辑:程序博客网 时间:2024/06/03 07:26
迷宫问题
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 22008 Accepted: 12848
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)
bfs 记录前驱节点,递归输出
AC代码
/************************************************************************* > File Name: migong.cpp > Author: YinJianxiang > Mail: YinJianxiang123@gmail.com > Created Time: 2017年06月24日 星期六 08时20分40秒 ************************************************************************/#include<stdio.h> int maze[5][5]; typedef struct node{ int x; int y; int pre; }Queue; int dx[] = {1,0,0,-1}; int dy[] = {0,1,-1,0}; Queue queue[20001]; int isSafe(int x,int y) { if(x < 0 || x >= 5 || y < 0 || y >= 5 || maze[x][y] == 1) { return 0; } return 1; } void print(int last) { if(queue[last].pre != -1) { print(queue[last].pre); printf("(%d, %d)\n",queue[last].x,queue[last].y); } } void bfs(int x,int y) { int front = 0; int rear = 0; int i; int next_x; int next_y; queue[front].x = x; queue[front].y = y; queue[front].pre = -1; rear++; maze[x][y] = 1; while(front < rear) { for(i = 0;i < 4;i++) { next_x = queue[front].x + dx[i]; next_y = queue[front].y + dy[i]; if(isSafe(next_x,next_y)) { maze[next_x][next_y] = 1; queue[rear].x = next_x; queue[rear].y = next_y; queue[rear].pre = front; rear++; } if(next_x == 4 && next_y == 4) { print(rear - 1); } } front++; } } int main(void) { int i; int j; for(i = 0;i < 5;i++) { for(j = 0;j < 5;j++) { scanf("%d",&maze[i][j]); } } printf("(0, 0)\n"); bfs(0,0); return 0; }
阅读全文
1 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 迷宫问题
- 定义交货类型的装运点确定规则
- Dwr 学习
- JAVA环境变量
- Mybatis映射多个参数不同的方法
- WebRTC 的回声抵消(AEC、AECM)算法简介
- POJ 3984 迷宫问题
- SERVLETJSP Unit02: Servlet工作原理
- 5-5 计算阶乘和 (10分)
- 解决Can’t locate ExtUtils/MakeMaker.pm in @INC
- A+B Problem(V)
- 网络判断和设置网络(有网无网)
- Android Camera HAL浅析
- 利用TTS API软件来转化语音技巧
- 感知器算法——二维优化