Problem Description:

桐老爷和UGO终于来到了名为“是男人就上一百层的塔”的下面,听说大祭司在第100层沉睡。为了题目需要,我把这个塔的层数随机打乱,层数的话大家就忘了前面的100吧,用n*m的一个矩阵来代替。前面提到大祭司在沉睡,所以桐人和尤吉欧希望赶快到达大祭司面前杠正面,但是有些层有整合骑士看守。只有在桐人或者UGO有“Enhance armament”(武装支配术)才可以打败,否则无法从这里通过。他们只可以从当前位置上下左右移动,不能斜着走。从一层走到另一层耗费1个时间单位,打败整合骑士不耗时间但是会消耗一个武装支配术。问:他们最快多久可以到达大祭司面前。

Input:

输入的第一行包含三个整数:M,N,T。M,N代表M行N列的地图,T代表桐人与尤吉欧武装支配术之和。0 < M,N < 200,0 ≤ T < 10  注:“Enhance armament”无法回复。后面是M行N列的地图,其中@代表桐人和尤吉欧,+代表大祭司。*代表可以直接通过的层,#代表有整合骑士的层。

Output:

输出包含一个整数R,代表桐人和尤吉欧来到大祭司面前最少需要花费的时间。如果桐尤无法追来到大祭司面前,则输出-1。

Sample Input:

4 4 1
#@##
**##
###+
****
4 4 2
#@##
**##
###+
****

Sample Output:

6
4
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<string>
#include<stack>
#include<set>
#include<queue>
#include<cstring>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std; struct node
{
int x;
int y;
int time;///时间
int t;///技能
}; node start,end;
int d[][]={ -,, ,, ,-, , };///上下左右
char a[][];
bool vis[][][]; queue<node>que;
int n,m,t,ans; void bfs()
{
memset(vis,false,sizeof(vis));
while(!que.empty()) que.pop();
vis[start.x][start.y][start.t]=true;
que.push(start);
while(!que.empty())
{
node now=que.front();
que.pop();
if(a[now.x][now.y]=='+')///遇到boss
{
ans=now.time;
break;
}
for(int i=;i<;i++)
{
int xx=now.x+d[i][];
int yy=now.y+d[i][];
int time=now.time+;///无论有没有怪,时间都要加1
if(xx>= && xx<n && yy>= && yy<m)///不越界的地方里
{
if( (a[xx][yy]=='*' || a[xx][yy]=='+')&& !vis[xx][yy][now.t])///没有怪,大祭司也要加进去
{
vis[xx][yy][now.t]=true;
que.push( {xx,yy,time,now.t} );///技能数不变
}
if(a[xx][yy]=='#' && now.t> && !vis[xx][yy][now.t-] )///有怪,技能数要>1
{
vis[xx][yy][now.t-]=true;
que.push( {xx,yy,time,now.t-});///压入队列技能数要-1
}
}
}
}
} int main()
{
while(scanf("%d%d%d",&n,&m,&t)!=EOF)
{
ans=-;
for(int i=;i<n;i++)
{
scanf("%s",a[i]);
} for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
if(a[i][j]=='@')
{
start.x=i;
start.y=j;
start.time=;
start.t=t;
}
}
bfs();
printf("%d\n",ans);
}
return ;
}

gdufe1538-是男人就上100层-(三维bfs)的更多相关文章

  1. 超多经典 canvas 实例,动态离子背景、移动炫彩小球、贪吃蛇、坦克大战、是男人就下100层、心形文字等等等

    超多经典 canvas 实例 普及:<canvas> 元素用于在网页上绘制图形.这是一个图形容器,您可以控制其每一像素,必须使用脚本来绘制图形. 注意:IE 8 以及更早的版本不支持 &l ...

  2. 是男人就下100层【第四层】——Crazy贪吃蛇(2)

    在上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(1)>中我们让贪吃蛇移动了起来,接下来我们来实现让贪吃蛇能够绕着手机屏幕边线移动而且能够改变方向 一.加入状态并改动代码 首先我 ...

  3. 是男人就下100层【第四层】——Crazy贪吃蛇(3)

    上一篇<是男人就下100层[第四层]--Crazy贪吃蛇(2)>实现了贪吃蛇绕着屏幕四周移动,这一篇我们来完成贪吃蛇的所有功能. 一.随机产生苹果 private void addAppl ...

  4. Unity经典游戏教程之:是男人就下100层

    版权声明: 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客&qu ...

  5. 使用AndEngine重制《是男人就上一百层》

    1.为什么还要做<是男人就上一百层> 一是在用Android原生API开发完<是男人就上一百层>以后,一直想体验一下用引擎开发游戏是个什么感觉,顺便也让游戏听上去高大上一些(使 ...

  6. Cocos2d-x 版本小游戏 《是男人就下100层》 项目开源

    这个是很久就开始动手写的一个小游戏了,直到最近才把它收尾了,拖拖拉拉的毛病总是很难改啊. 项目是基于 cocos2d-x v2.2 版本 ,目前只编译到了 Win8 平台上,并且已经上传到了商店,支持 ...

  7. HTML5游戏开发_是男人就下100层

    项目流程 市场调研(可行性分析)--> 可行性报告书  需求分析师.客户经理 需求分析--> 需求说明书  项目经理.需求分析师 概要设计--> 概要设计说明书(ER图, UML)  ...

  8. 是男人就下100层【第四层】——Crazy贪吃蛇(1)

    贪吃蛇是一款非常经典的游戏,这些经典游戏给我们的童年添加了不少乐趣,今天開始我们来一步一步的在Android设备上实现一款贪吃蛇游戏,我也是第一次写这个游戏,有可能会写错,或者走弯路,可是终于希望能有 ...

  9. Google面试题之100层仍两个棋子

    一道Google面试题,题目如下:"有一个100层高的大厦,你手中有两个相同的玻璃围棋子.从这个大厦的某一层扔下围棋子就会碎,用你手中的这两个玻璃围棋子,找出一个最优的策略,来得知那个临界层 ...

随机推荐

  1. phpstudy远程连接mysql

    格局如图所示执行以下命令 mysql -u root -p mysql>use mysql; mysql>select 'host' from user where user='root' ...

  2. Java - 28 Java 泛型

    Java 泛型 如果我们只写一个排序方法,就能够对整型数组.字符串数组甚至支持排序的任何类型的数组进行排序,这该多好啊. Java泛型方法和泛型类支持程序员使用一个方法指定一组相关方法,或者使用一个类 ...

  3. CS229 4.Logistic Regression

  4. angularjs探秘<二>表达式、指令、数据绑定

    距离第一篇笔记好久了,抽空把angular的笔记梳理梳理. ng-init:初始化指令,这里可以声明变量,且变量不用指定数据类型(类似js中的var用法). 数值变量与字符串相加默认做字符串拼接运算. ...

  5. linux系统 python升级创建虚拟环境

    Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替之前的virtualenv. 该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持.每一个虚拟环境都有其自 ...

  6. eclipse windowbuilder palette 空白

    今天在 eclipse 上安装了 windowbuilder 插件,但是 palette 一直是空白的,不能放控件. 版本 eclipse 4.9.0, windowbuilder 1.9.0. 经过 ...

  7. spark 数据读取与保存

    spark支持的常见文件格式如下: 文本,json,CSV,SequenceFiles,Protocol buffers,对象文件 1.文本 只需要使用文件路径作为参数调用SparkContext 中 ...

  8. Android权限管理

    使用系统权限 为了保护系统的完整性和用户隐私权,Android 在访问受限的沙盒中运行每款应用.如果应用需要使用其沙盒以外的资源或信息,则必须明确请求权限.根据应用请求的权限类型,系统可能会自动授予权 ...

  9. dubbo超时优先级设置

    调用超时配置的优先级 可以在多个配置项设置超时,由上至下覆盖(即上面的优先),示例如下: # 其它的参数(retries.loadbalance.actives等)的覆盖策略也一样. 提供者端特定方法 ...

  10. 02.centos6.4找不到ifcfg-eth0(静态ip配置)

    1.默认情况在/etc/sysconfig/network-scripts/目录下面找不到ifcfg-eth0文件,我们需要手动copy 1.1动态ip配置 #cp ifcfg-lo ifcfg-et ...