链接:点击打开链接

题意:三维搜索‘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. 配置Oracle数据库的开机自启动

    每当数据库服务器重启后,都要重新启动数据库的监听和实例,特别是在服务器断电重启.例行维护性的场景下.能否像Windows服务器一样,让实例和监听随着服务的启动而启动呢?答案当然是肯定的,我们可以利用O ...

  2. Jquery 实现列表的显示和隐藏

    本人github源码下载地址:https://github.com/liuyanpeng521/ListChange.git

  3. Extension Methods(扩展方法)

    在 OOPL 中,有静态方法.实例方法和虚方法,如下:   public sealed class String {      public static bool  IsNullOrEmpty(st ...

  4. spring 将配置文件中的值注入 属性

    1.编写配置文件 #债权转让 #默认周期 必须大于0 credit.defaultDuration=1 #最小转让金额(元) credit.minBidAmount=1.00 #最小转让时间 到期时间 ...

  5. PHP 之微信小程序支付封装

    <?php /** * Created by PhpStorm. * User: yangs * Date: 2019/4/26 * Time: 14:28 */ class WeixinPay ...

  6. python dns请求

    一.DNS dns(domain name system)域名系统 ,主要用来把主机名转换成ip地址.其至今能存在的原因有两个: 能使人们记住名字,而不是ip地址: 允许服务器改变地址,但使用相同的名 ...

  7. 第六节:pandas函数应用

    1.pipe() :表格函数应用: 2.apply():表格行列函数应用: 3.applymap():表格元素应用.

  8. LA 4329 Ping pong

    #include <iostream> #include <cstring> #include <cstdio> using namespace std; ; ; ...

  9. (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

    在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...

  10. ssh_整合总结

    开场白:首先,我先帮大家整理一下思路 准备: 数据库,表,数据 jar 包准备 Hibernate 基本jar 包 C3p0 数据库连接池 Spring AOP 基本包 Spring Ioc 基本包 ...