poj 2251
来源:互联网 发布:php sql 防注入函数 编辑:程序博客网 时间:2024/05/29 02:09
此题用到了三维数组,其实很简单,虽然做了这么久!
附上代码:
#include<stdio.h>#include<string.h>#define N 30+10char s[N][N][N];int vis[N][N][N],dis[N][N][N];int t,l,r,c,i1,j1,k1,i2,j2,k2;int mov1[6]={1,0,0,0,0,-1};int mov2[6]={0,0,1,0,-1,0};int mov3[6]={0,1,0,-1,0,0};struct Point{ int z;int x;int y;}q[10000];int bfs(int z,int x,int y){ int i,j,k,tz,tx,ty; int x1,y1,z1; int Front,rear; Front=rear=0; vis[z][x][y]=1; q[rear].z=z; q[rear].x=x; q[rear].y=y; rear++; while(Front<rear) { z1=q[Front].z; x1=q[Front].x; y1=q[Front].y; if(z1==i2&&x1==j2&&y1==k2) { return 1; } Front++; for(i=0;i<6;i++) { tz=z1+mov1[i]; tx=x1+mov2[i]; ty=y1+mov3[i]; if(tz>=0&&tz<l&&tx>=0&&tx<r&&ty>=0&&ty<c&&!vis[tz][tx][ty]&&s[tz][tx][ty]!='#') { vis[tz][tx][ty]=1; dis[tz][tx][ty]=dis[z1][x1][y1]+1; q[rear].z=tz; q[rear].x=tx; q[rear].y=ty; rear++; } } } return 0;}int main(){ int i,j,k,n,m; while(scanf("%d%d%d",&l,&r,&c)==3&&(l||r||c)) { getchar(); memset(s,'\0',sizeof(s)); for(i=0;i<l;i++) { for(j=0;j<r;j++) { for(k=0;k<c;k++) { scanf("%c",&s[i][j][k]); if(s[i][j][k]=='S') { i1=i;j1=j;k1=k; } if(s[i][j][k]=='E') { i2=i;j2=j;k2=k; } } getchar(); } getchar(); } memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); if(!bfs(i1,j1,k1)) printf("Trapped!\n"); else printf("Escaped in %d minute(s).\n",dis[i2][j2][k2]); } return 0;}
0 0
- POJ-2251
- POJ 2251
- poj 2251
- poj 2251
- POJ 2251
- poj 2251
- POJ 2251
- POJ 2251
- poj 2251
- poj-2251
- poj 2251
- POJ 2251
- poj 2251
- poj 2251
- poj 2251
- poj 2251
- 2251POJ
- poj-2251
- Silverlight应用程序中未处理的错误代码:2104 类别:InitializeError
- table的css样式
- 布局文件下控件的选择
- 环境配置和开发时间
- qt 之 QObject
- poj 2251
- Linux对外开放端口
- Eclipse 字体调整
- mysql自增ID(auto_increment)讨论
- 从头开始学习 Dojo,第 2 部分: 使用 Dojo 掌握面向对象开发
- Linux sudo apt-get install xxxx 到底安装到哪个目录?
- mysql安装详解及删除注册表
- cocos2d-x学习笔记-cocos-2d-2.0.4交叉编译
- 食物链 并查集 解题报告