poj 3984 迷宫问题
来源:互联网 发布:js如何遍历json数据 编辑:程序博客网 时间:2024/06/10 01:19
迷宫问题
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)水过。。。。
#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 5#define INF 0x7fffffftypedef struct node{ int x, y; }Node;Node cur, now, fa[N][ N], Queue[N << 5];int maze[N][N], Drict[N][N],last_dir[N][N],dir[N * N];int dx[] = { -1, 1, 0, 0 }, dy[] = { 0, 0, -1, 1 };void read(){int i, j;for (i = 0; i < N; i++){for (j = 0; j < N; j++)scanf("%d", &maze[i][j]);}}void bfs(int x, int y){int i, j, nx, ny, rear = 0, front = 0;for (i = 0; i < N; i++){for (j = 0; j < N; j++)Drict[i][j] = INF;}Drict[x][x] = 0;cur.x = x, cur.y = x;Queue[rear++] = cur;while (front < rear){now = Queue[front++];if (y == now.x && y == now.y)break;for (i = 0; i < 4; i++){nx = now.x + dx[i], ny = now.y + dy[i];if (nx >= 0 && nx < N && ny >= 0 && ny < N && INF == Drict[nx][ny] && 1!= maze[nx][ny]){cur = (Node){ nx, ny };Drict[nx][ny] = Drict[now.x][now.y] + 1;fa[nx][ny] = now;Queue[rear++] = cur;last_dir[nx][ny] = i;}}}}void print_path(int x, int y){int i, c = 0;while (1){int fx = fa[x][y].x, fy = fa[x][y].y;if (fx == x && fy == y)break;dir[c++] = last_dir[x][y];x = fx, y = fy;}x = y = 0;printf("(0, 0)\n");while (c--){for (i = 0; i<4; i++){if (i == dir[c]){printf("(%d, %d)\n", x += dx[i], y += dy[i]);break;}}}}void solve(){memset(Queue, 0, sizeof(Queue));bfs(0, 4);print_path(4, 4);}int main(){read();solve();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 迷宫问题
- 【网络安全】Snort中文查询手册
- 3d015期于海滨专家
- 学习vi和vim编辑器(13):vi同类品的功能总览
- C语言学习笔记1——
- JAVA 输入一个字符串,将大写字母改成小写,小写字母改成大写
- poj 3984 迷宫问题
- C#中类和结构体的区别
- Android获取手机屏幕分辨率
- ClassLoader
- wxpython GUI之一个小小计算器
- 数据结构体模版---循环单链表
- 欧拉计划---0002 Even Fibonacci numbers(四百万以内斐波纳契偶数和)
- 易飞:采购单数量未满,却自动指定结束?
- Block 详解(一)