Description

雷德利斯科特导演在为最新的异形三部曲终章《觉醒》征集主演,达达学长在宿舍观看《普罗米修斯》的时候看到剧中的主演们一个又一个成为异形的盘中餐,达达学长认为他们太笨了,决定亲自上阵会一会异形
斯科特导演为了考验主角的智慧,将达达学长扔到了一艘名叫小学期的阴森的太空船中并派生化人bluesky去帮助他.万万没想到的是,生化人bluesky叛变了,达达学长惊慌失措的开始在太空船中逃亡.
达达学长的情况现在万分危机,前面未知的船舱中游荡着一只异形,后面还有生化人bluesky的追击.
因为生化人bluesky的追击,达达学长绝对不能走回头路也不能在原地停留一刻,现在达达学长呼叫你来帮助他,因为只有你知道整个太空船的构造和异形的位置.
(为了处理方便)现在你已知太空船是一个高Hight,宽Row,长Col的长方体,(为了简单起见)船中游荡着1只异形,你拥有的先进的动作感知器已经捕捉到了异形的运动规律(异形穿墙还不是分分钟的事情)和异形的感觉范围,现在请你帮助达达学长找出一条逃生的路
达达学长每次最快只能走一格,异形也是.
情况万分危机,现在达达学长只想知道他是否可以幸存(因为生化人bluesky的追杀,达达学长只会走前往逃生舱的最短路径不会兜圈子),如果幸存输出需要多长时间才可以到达逃生舱,如果不能幸存输出-1

Input

1. 首先输入船高H,船宽R,船长C三个整数n, n大于等于3小于等于30
  2. 之后按序输入H个二维地图,每一个二维地图都是代表太空船的一层,地图中.符号代表一格通道,#代表船身,S代表达达学长当前的位置,E代表太空船的逃生舱的位置
  3. 之后输入两个整数a,b , 其中a代表异形的移动的位置数目,b代表异形的感知范围
  4. 之后输入a行数据,每一行存在3个整数代表异形活动的位置的坐标,异形按照输入的顺序做有规律的来回移动
  5. 达达学长逃亡的过程中不能出现在异形的感觉范围内,否则会立刻被追杀

6. 输入包含多组用例,最后一组用例用0 0 0结尾并且不做任何处理

Output

如果达达学长可以逃亡成功输出达达学长到达逃生舱的最短时间n,

输出格式 : Escaped in n minute(s).

如果达达学长不能逃亡成功请输出-1

PS :

1. 异形的感知是6个方向,所谓的感知范围表示的是异形在某一个方向上的视觉的延伸

2. a大小是没有具体限制的,太空船多大,a就会有多大a的最小限制是1

3. 异形有规律的来回移动

(1,1)->(1,2)->(1,3)->(1,2)->(1,1)

测试用例:

输入:

3 4 5
.S...
.###.
.##..
###.######
#####
##.##
##...#####
#####
#.###
####E
4 0
1 2 2
1 3 2
1 3 3
1 3 4
1 3 3
S##
#E#
###
1 2
0 0 0
0 0 0

输出:

-1
-1

题解:

最开始有个地方搞错了就是,异性坐标为1,1,1时是在第2层,第2行,第2列处,也就是0为第一层/行/列。

然后这题就是一道三维bfs,用一个dis[][][]记录每个点到S距离,初始化为INF,如果到达一个点的时候正好在异形的范围内,那么终止这条路径,把这个点记为#,最终看dis[x][y][z]是否为一个整数而不是INF,判断能不能走出去。

代码:

#include<stdio.h>
#include<string.h>
char map[31][31][31];
int h,r,c,a,b;
typedef struct{short h,x,y;
}node;
node que[30000],pos[30000];
node s,e;
int dis[31][31][31];
short dx[]={-1,0,1,0,0,0};
short dy[]={0,-1,0,1,0,0};
short dh[]={0,0,0,0,-1,1};
int inf=0x3f3f3f3f;int main()
{while(scanf("%d%d%d",&h,&r,&c),(h!=0&&r!=0&&c!=0)){int i,j,k,l;for(i=0;i<31;i++)for(j=0;j<31;j++)for(k=0;k<31;k++)dis[i][j][k]=inf;for(k=0;k<h;k++)for(i=0;i<r;i++){scanf("%s",map[k][i]);for(j=0;j<c;j++){if(map[k][i][j]=='S'){s.h=k,s.x=i,s.y=j;map[k][i][j]='#';dis[k][i][j]=0;}if(map[k][i][j]=='E') e.h=k,e.x=i,e.y=j;}}scanf("%d%d",&a,&b);for(i=0;i<a;i++){scanf("%d%d%d",&pos[i].h,&pos[i].x,&pos[i].y);}int p1=0,p2=0;que[p2++]=s;while(p2>=p1){node now=que[p1++];if(now.h==e.h&&now.y==e.y&&now.x==e.x)break;for(i=0;i<6;i++){short hh=now.h+dh[i],xx=now.x+dx[i],yy=now.y+dy[i];if(xx<0||yy<0||hh<0||xx>r-1||yy>c-1||hh>h-1||map[hh][xx][yy]=='#')continue;int intex;if(a==1) intex=0;else if(a==2) intex=(dis[now.h][now.x][now.y]+1)%2;else{intex=((dis[now.h][now.x][now.y]+1)%(2*a-2));if(intex>=a) intex=2*(a-1)-intex;}node poss=pos[intex];if((poss.h==hh&&poss.x==xx&&yy<=poss.y+b&&yy>=poss.y-b)||(poss.h==hh&&poss.y==yy&&xx<=poss.x+b&&xx>=poss.x-b)||(poss.y==yy&&poss.x==xx&&hh<=poss.h+b&&hh>=poss.h-b))continue;map[hh][xx][yy]='#';dis[hh][xx][yy]=dis[now.h][now.x][now.y]+1;node temp;temp.x=xx,temp.y=yy,temp.h=hh;que[p2++]=temp;}}if(dis[e.h][e.x][e.y]==inf)printf("-1\n");else  printf("Escaped in %d minute(s).\n",dis[e.h][e.x][e.y]);}return 0;
}

小学期 异形:达达学长的生死逃亡相关推荐

  1. 电商小学期 - 智能家居网站结项报告

    前言: 「  Design & Build 」 三个专业三个方向,共同完成一个项目,分别为: 物联网   数据库的搭建及管理员相关 电管      硬件设施的实现 电商      用户方面的前 ...

  2. java小学期实验报告_小学期实习心得

    1.小学期实践报告如何写? 关于"实践报告"的范文找到一些,专小学的找不到属 http://www.levelpad.com/system/plus/search.php?kwty ...

  3. HNU小学期计算机系统设计与创新基础训练——基于STC学习板的加密信息存储与游戏操作系统(第一部分设计思路+基础原理)

    HNU小学期计算机系统设计与创新基础训练--加密信息存储与游戏操作系统 一. 选题名称 二. 选题背景 三. 实现功能 1. 主要功能 2. 细节设计 四. 设计思路 五. 基本原理 1. 数码管与发 ...

  4. 京东到家甩包袱给达达 路走错了合并也没

    昨夜,一篇<传京东到家.58到家合并>的消息引发了不小的关注,结果今天中午出现了剧情反转,京东原定在今天宣布的"big deal"原来是并购达达,而不是58到家,选择达 ...

  5. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力!

    来自:即时通讯网   http://www.52im.net/thread-2141-1-1.html 达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是 ...

  6. 达达真人漫画秀,微博演绎男版杜拉拉生存记

    达达真人漫画秀,微博演绎男版杜拉拉生存记 微博的影响力越来越强,每天在微博转悠的时候,也总有一些事情能进入眼帘.最近看到一个微博就很有意思,那就是男版杜拉拉--达达真人漫画故事.轻松而演绎,让人看了嫣 ...

  7. newifi3高恪魔改最新_12.22达达最新球球id账号呆瓜表

    <达达12.22最新更新未出球球词组ID> 老婆 10000  草莓 9999 带年卡麦穗号 全赛季超神 会员到21.11月 周杰伦 6200 号主包改 可谈 娃娃 6200 不带号 包中 ...

  8. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力

    1.引言 达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利用社 ...

  9. 达达集团IPO,新零售基础设施第一股

    本文原创自洞见网www.localonline.com.cn,文章标题:"达达集团IPO,新零售基础设施第一股",文章链接:http://www.localonline.com.c ...

最新文章

  1. jQuery ajax请求成功且返回了数据,但是不进success:function()
  2. linux kernel中cache代码解读
  3. ProEssentials实时三维图表控件
  4. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解
  5. 企业微信:腾讯的“佛系”办公江湖
  6. React Native中一些常用组件用法
  7. ObjC学习9-Foundation框架之操作文件
  8. 7.业务架构·应用架构·数据架构实战 --- 业务架构书
  9. Java编写一个小游戏
  10. 广告机CE认证 FCC认证费用构成
  11. 手把手教你如何做一套utm广告投放系统
  12. Python获取金山词霸每日一句
  13. java佳沃自行车怎么样_JAVA佳沃这个车怎么样最近想入
  14. 线性代数(4):伴随矩阵、逆矩阵和矩阵的秩
  15. 图论专题1(网络流)
  16. 非项目——产出物:改变的价值
  17. [golang gin框架] 27.Gin 商城项目-购物车
  18. 突发!又一风云人物,被警方采取刑事强制措施
  19. 开车,网吧,魔兽争霸,几天独特的生活体验
  20. 【深度学习人类语言处理】3 语音转换——类别(特征分解、直接转换)、语音分离(评价指标、深度聚类、PIT、TaskNet)

热门文章

  1. HI3516DV300笔记(四)修改uboot环境变量
  2. Android Studio 4.22 解决com.android.tools.idea.run.ApkProvisionException
  3. php九宫格图片合成,多宫格图片合成
  4. npm 安装淘宝镜像报错 npm ERR! code EEXIST
  5. [前后端分离][MVC模式]JavaWeb实现简单的购物网站主体功能
  6. cython大白话基础教程
  7. 零基础HTML入门教程(11)——换行br
  8. element-ui 阻止冒泡事件
  9. c++ overload 、override、overwrite
  10. 什么是reactor模式?