POJ-3984-迷宫问题
2012-07-12 17:10
225 查看
POJ-3984-迷宫问题
http://poj.org/problem?id=3984
用BFS求最短路劲,记录每一个状态之前的状态,输出路劲即可
http://poj.org/problem?id=3984
用BFS求最短路劲,记录每一个状态之前的状态,输出路劲即可
#include<stdio.h> #include<string.h> #include<stdlib.h> int map[5][5]; int visit[5][5]; int pre[100]; //记录每一个状态的前一个状态 struct cam { int x; int y; }list[100]; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; int go(int x,int y) { if(0<=x&&x<5&&0<=y&&y<5&&map[x][y]==0) return 1; return 0; } void print(int x) { int t; t=pre[x]; if(t==0) { printf("(0, 0)\n"); printf("(%d, %d)\n",list[x].x,list[x].y); return; } else print(t); printf("(%d, %d)\n",list[x].x,list[x].y); } void bfs() { int i,head,tail; int x,y,xx,yy; memset(visit,0,sizeof(visit)); head=0; tail=1; list[0].x=0; list[0].y=0; pre[0]=-1; while(head<tail) { x=list[head].x; y=list[head].y; if(x==4&&y==4) { print(head); return; } for(i=0;i<4;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; if(!visit[xx][yy]&&go(xx,yy)) { visit[xx][yy]=1; list[tail].x=xx; list[tail].y=yy; pre[tail]=head; tail++; } } head++; } return; } int main() { int i,j; for(i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&map[i][j]); bfs(); return 0; }
相关文章推荐
- POJ 3984--迷宫问题【BFS && 记录路径】
- POJ 3984 迷宫问题(BFS+STL queue)
- POJ 3984 迷宫问题 BFS
- 迷宫问题(dfs)POJ - 3984
- POJ 3984 迷宫问题
- POJ - 3984 迷宫问题
- POJ 3984 迷宫问题
- poj 3984迷宫问题
- POJ-3984-迷宫问题(BFS)
- K_迷宫问题(POJ_3984)
- POJ 3984 迷宫问题(bfs)
- poj 3984 迷宫问题 (BFS)
- POJ 3984 迷宫问题 BFS 记录路径
- POJ 3984 迷宫问题(BFS)
- POJ 3984 迷宫问题【迷宫最短路径 bfs】
- POJ 3984:迷宫问题(BFS+路径记录)
- POJ 3984 - 迷宫问题
- POJ 3984 - 迷宫问题
- K - 迷宫问题 POJ - 3984(广度搜索)
- 【BFS+保存路径】POJ 3984 迷宫问题