poj 2251 Dungeon Master
2016-11-10 19:11
323 查看
很简单的一道搜索模板题,,给出邻接矩阵,然后需要自己搜索找出起点和终点,剩下的纯粹就是套模板了。
<pre name="code" class="cpp">#include <iostream> #include <stdio.h> #include<string.h> #include<queue> using namespace std; int l,r,c,tx,ty,tz,x,y,z; char a[31][31][31]; int book[31][31][31]; int ans; struct node { int x,y,z; int step; }; queue<node>Q; int ne[6][3]={{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}}; int check(int x,int y,int z) { if(x<0||x>l||y<0||y>r||z<0||z>c) return 0; return 1; } int bfs(int bx,int by,int bz) { int i,j; queue<node>Q; node q,p; q.x=bx; q.y=by; q.z=bz; q.step=0; a[bx][by][bz]='#'; Q.push(q); while(!Q.empty()) { p=Q.front(); Q.pop(); for(i=0;i<6;i++) { q=p; q.x+=ne[i][0]; q.y+=ne[i][1]; q.z+=ne[i][2]; q.step++; if(check(q.x,q.y,q.z)==0) continue; if(a[q.x][q.y][q.z]=='E') { ans=q.step; return 1;} if(a[q.x][q.y][q.z]=='.') { a[q.x][q.y][q.z]='#'; Q.push(q); } } } return 0; } int main() { while(scanf("%d%d%d",&l,&r,&c)&&(l!=0||r!=0||c!=0)) { int i,j,k; for(i=0;i<l;i++) { for(j=0;j<r;j++) { scanf("%s",a[i][j]); } } for(i=0;i<l;i++) { for(j=0;j<r;j++) { for(k=0;k<c;k++) { if(a[i][j][k]=='S') { tx=i; ty=j; tz=k; } } } } ans=0; int flag=0; flag=bfs(tx,ty,tz); if(flag==0) { printf("Trapped!\n"); } else { printf("Escaped in %d minute(s).\n",ans); } memset(a,0,sizeof(a)); memset(book,0,sizeof(book)); } return 0; }
相关文章推荐
- POJ-2251-Dungeon Master
- POJ 2251 Dungeon Master(bfs)
- Poj 2251 Dungeon Master
- POJ-2251-Dungeon Master
- POJ 2251 Dungeon Master
- poj_2251 Dungeon Master(bfs)
- POJ2251 - Dungeon Master
- POJ 2251-Dungeon Master(BFS-三维迷宫)
- POJ 2251 Dungeon Master
- POJ - 2251 Dungeon Master
- POJ-2251 (Dungeon Master)
- poj 2251 Dungeon Master
- POJ 2251 Dungeon Master(BFS)
- poj 2251 Dungeon Master(BFS)
- POJ2251-Dungeon Master
- Poj 2251 Dungeon Master(三维Dfs)
- POJ 2251 Dungeon Master(3维BFS)
- POJ-2251-Dungeon Master【BFS】【三维迷宫问题】
- poj 2251 Dungeon Master (BFS)
- POJ2251 Dungeon Master 解题报告