您的位置:首页 > 其它

POJ - 3984 迷宫问题(水BFS)

2015-10-10 11:12 357 查看
题目大意:给你一个迷宫,最短时间内走出

解题思路:水

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int N = 10;

struct Node {
int x, y;
Node() {}
Node(int x, int y):x(x), y(y) {}
};

int map

;
int pathx

, pathy

;
bool vis

;
int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};

void init() {
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
scanf("%d" ,&map[i][j]);
memset(vis, 0, sizeof(vis));
}

void bfs() {
queue<Node> Q;
Q.push(Node(0, 0));
vis[0][0] = 1;
while (!Q.empty()) {
Node t = Q.front(); Q.pop();
for (int i = 0; i < 4; i++) {
int x = t.x + dir[i][0];
int y = t.y + dir[i][1];
if (x < 0 || x >= 5 || y < 0 || y >= 5 || vis[x][y] || map[x][y]) continue;
pathx[x][y] = t.x;
pathy[x][y] = t.y;
vis[x][y] = 1;
Q.push(Node(x, y));
}
}
}

void out(int x, int y) {
if (x == 0 && y == 0) {
printf("(%d, %d)\n", x, y);
return ;
}
out(pathx[x][y], pathy[x][y]);
printf("(%d, %d)\n", x, y);
}

int main() {
init();
bfs();
out(4, 4);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: