链接:点击打开链接

题意:三维搜索‘S’为起点,‘E’为终点,求走出的最短时间

代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <queue>
using namespace std;
int xx[]={1,-1,0,0,0,0}; //方向向量
int yy[]={0,0,1,-1,0,0};
int zz[]={0,0,0,0,1,-1};
int p,q,r;
char str[35][35][35];
struct node{
int x,y,z,sum;
};
int bfs(node st,node en){
int i;
queue<node>qu;
node cur,temp;
qu.push(st);
while(qu.size()){
cur=qu.front();qu.pop();
if(cur.x==en.x&&cur.y==en.y&&cur.z==en.z)
return cur.sum; //找到之后直接返回走的步数
for(i=0;i<6;i++){
temp.x=cur.x+xx[i];
temp.y=cur.y+yy[i];
temp.z=cur.z+zz[i];
temp.sum=cur.sum+1;
if(temp.x>=0&&temp.x<p&&temp.y>=0&&temp.y<q&&temp.z>=0&&temp.z<r)
if(str[temp.x][temp.y][temp.z]!='#'){
qu.push(temp);
str[temp.x][temp.y][temp.z]='#'; //走过之后就变成'#',省掉一个数组记录
} //是否走过
}
}
return -1;
}
int main(){
int i,j,k,sumsum;
node st,en;
while(scanf("%d%d%d",&p,&q,&r)!=EOF&&(p||q||r)){
for(i=0;i<p;i++)
for(j=0;j<q;j++)
for(k=0;k<r;k++){
cin>>str[i][j][k];
if(str[i][j][k]=='S')
st.x=i,st.y=j,st.z=k,st.sum=0;
else if(str[i][j][k]=='E')
en.x=i,en.y=j,en.z=k;
}
sumsum=bfs(st,en);
if(sumsum==-1)
printf("Trapped!\n");
else
printf("Escaped in %d minute(s).\n",sumsum);
}
return 0;
}

zoj1940的更多相关文章

  1. zoj1940(三维广搜)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=940 分析:三维其实就是六个方向地搜索,思维清晰且细心点,很快就AC了 ...

  2. OJ题目分类

    POJ题目分类 | POJ题目分类 | HDU题目分类 | ZOJ题目分类 | SOJ题目分类 | HOJ题目分类 | FOJ题目分类 | 模拟题: POJ1006 POJ1008 POJ1013 P ...

随机推荐

  1. [转]linux下ulimit命令详解

    转自:http://blog.chinaunix.net/uid-23842323-id-2656582.html 1,说明:ulimit用于shell启动进程所占用的资源.2,类别:shell内建命 ...

  2. Spring Cloud (11) Hystrix-监控聚合监控

    上一篇利用Hystrix Dashboard去监控断路器的Hystrix command,当我们有很多服务的时候,就需要聚合所有服务的Hystrix Dashboard数据了,这就需要Hystrix ...

  3. [ Luogu Contest 10364 ] TG

    \(\\\) \(\#A\) 小凯的数字 给出两个整数\(L,R\),从\(L\)到\(R\)按顺序写下来,求生成整数对\(9\)取模后的答案. 例如\(L=8,R=12\),生成的数字是\(8910 ...

  4. Android 将图片网址url转化为bitmap

    public Bitmap returnBitMap(final String url){ new Thread(new Runnable() { @Override public void run( ...

  5. Android基础TOP3_1:纵横屏切换

    在Res下建立layout-port文件夹  为竖屏时加载的界面: 建立layout-land 文件夹 为横屏加载的界面

  6. Nrpe 插件安装教程

    Nrpe 插件安装教程  blog地址: http://www.cnblogs.com/caoguo 一.nagios plugins的安装 [root@Nrpe ~]# yum install -y ...

  7. Centos6.6 安装rsync服务端

    一.介绍 在工作中经常遇到代码分发,或者是资料备份,都会用到rsync,配置不算复杂,仅做下记录,安装环境如下: 1) Centos6.6 2) rsync-3.0.6-12.el6.x86_64 3 ...

  8. (转)分布式文件存储FastDFS(四)配置fastdfs-apache-module

    http://blog.csdn.net/xingjiarong/article/details/50560605 在前边我们已经配置好了FastDFS的环境,但是此时的FastDFS还不能通过htt ...

  9. Android List,Set,Map集合安全 集合区别 并发集合类性能分析

    对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合 Collection接口主要有两 ...

  10. vue中fetch请求

    1. 请求方式:get 请求参数:menuName 返回的结果:data created(){ this._initPageData() }, methods:{ _initPageData(){ f ...