链接:点击打开链接

题意:三维搜索‘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. Spring Web MVC核心架构

    可以查看DispatherServlet中的源代码,就是doDispatch()方法!

  2. debounce还是throttle(去抖和节流)

    debounce 去抖 我的理解很简单,比方说window.onscroll会疯狂触发handler,此时给它一个debounce(handler, delayTime). 就是不管你延时时间内触发了 ...

  3. Android fragment-findFragmentByTag 始终返回 null

    我曾四处看看,在我的案子中找到几个与类似的主题,但没有帮助的问题.我想访问现有活动片段使用getSupportFragmentManager().findFragmentByTag(TAG),但它始终 ...

  4. 一个.py引用另一个.py中的方法

    处理函数 X_Add_Y_Func.py #__author__ = 'Administrator' def add_func(x, y): return x+y 调用函数 X_Add_Y_Func_ ...

  5. Redux 基础概念

    Redux is a predictable state container for JavaScript apps.,亦即 Redux 希望能提供一个可以预测的 state 管理容器,让开发者可以可 ...

  6. 初学layer

    canvas是支持图层layer渲染这种技术的,canvas默认就有一个layer,当我们平时调用canvas的各种drawXXX()方法时,其实是把所有的东西都绘制到canvas这个默认的layer ...

  7. HashMap , TreeMap , TreeMap 默认排序

    Java代码  import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java. ...

  8. html5——3D案例(立方体)

    立方体:父盒子规定了3d呈现属性,立方体做旋转运动 移动顺序:1.每个盒子都先移动100px,然后再做相应的旋转  2.只有这样立方体的几何中心点与父盒子的几何中心点是一样的 <!DOCTYPE ...

  9. CAD在图纸保存的同时,也把基本信息保存了(网页版)

    主要用到函数说明: MxDrawXCustomFunction::Mx_SaveDwgToURLEx 保存DWG文件到服务器上的扩展函数.详细说明如下: 参数 说明 pszServerUrl 服务器网 ...

  10. python实战教程之自动扫雷

    1.找到游戏窗口与坐标 #扫雷游戏窗口class_name = "TMain"title_name = "Minesweeper Arbiter "hwnd = ...