SDUT 1124-飞跃荒野(三维BFS)
飞跃原野
Time Limit: 5000ms Memory limit: 65536K 有疑问?点这里^_^
题目描写叙述
最终。法里奥来到了最后的一站:泰拉希尔原野,穿过这里就能够回到基地了。
然而,敌人依旧紧追不舍。
只是,泰拉希尔的地理条件对法里奥十分有利,众多的湖泊随处分布。
敌人须要绕道而行,但法里奥还是决定找一条能尽快回到基地的路。
如果泰拉希尔原野是一个m*n的矩阵,它有两种地形,P表示平,L表示湖泊,法里奥仅仅能停留在平地上。他眼下的位置在左上角(1,1)处,而目的地为右下角的(m,n)。法里奥能够向前后左右4个方向移动或飞行,每移动1格须要1单位时间。而飞行的时间主要花费在变形上,飞行本身时间消耗非常短,所以不管一次飞行多远的距离,都仅仅须要1单位时间。飞行的途中不能变向,而且一次飞行终于必须要降落到平地上。当然,因为受到能量的限制,法里奥不能无限制飞行,他总共最多能够飞行的距离为D。
在知道了以上的信息之后,请你帮助法里奥计算一下,他最快到达基地所须要的时间。
输入
输出
演示样例输入
4 4 2
PLLP
PPLP
PPPP
PLLP
演示样例输出
5
QAQ用二维的bfs怒搜8个方向就是过不去。Wjj说是要状态同步仅仅能用三维,sad 还是对三维比較不敏感,没往那方面想。
这道题,以行和列为x。y,以飞行距离D为z 建立三维搜索思想,然后每次在4个方向分别让它行走和飞行。其它的没什么了。
#include <cstdio>//BFS
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
char ma[110][110];
bool vis[110][110][110];
typedef struct node
{
int x,y,d,time;
};
int n,m,d;
int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void bfs()
{
queue <node> Q;
node t;int i,j;
t.x=0;t.y=0;t.time=0;t.d=d;
Q.push(t);
while(!Q.empty())
{
node v=Q.front(); Q.pop();
if(v.x==m-1&&v.y==n-1)
{
cout<<v.time<<endl;
return ;
}
for(i=0;i<4;i++)
{
t.x=v.x+dir[i][0];
t.y=v.y+dir[i][1];
t.d=v.d;
if(t.x>=0&&t.x<m&&t.y>=0&&t.y<n&&!vis[t.x][t.y][t.d]&&ma[t.x][t.y]=='P')//run
{
vis[t.x][t.y][t.d]=1;
t.time=v.time+1;
Q.push(t);
}
for(j=2;j<=v.d;j++)//fly
{
t.x=v.x+j*dir[i][0];
t.y=v.y+j*dir[i][1];
if(t.x>=0&&t.x<m&&t.y>=0&&t.y<n&&!vis[t.x][t.y][v.d-j]&&ma[t.x][t.y]=='P')
{
vis[t.x][t.y][v.d-j]=1;
t.d=v.d-j;
t.time=v.time+1;
Q.push(t);
}
}
}
}
puts("impossible");
}
int main()
{
int i,j;
while(cin>>m>>n>>d)
{
memset(vis,0,sizeof(vis));
for(i=0;i<m;i++)
cin>>ma[i];
bfs();
}
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
SDUT 1124-飞跃荒野(三维BFS)的更多相关文章
- 飞跃原野(三维bfs)
Problem Description 勇敢的法里奥出色的完成了任务之后,正在迅速地向自己的基地撤退.但由于后面有着一大群追兵,所以法里奥要尽快地返回基地,否则就会被敌人逮住. 终于,法里奥来到了最后 ...
- SDUT OJ 1124 飞越原野 (三维BFS练习)
飞跃原野 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit5000ms Memory Limit 65536K ...
- hdu 1240:Asteroids!(三维BFS搜索)
Asteroids! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- POJ 2251 Dungeon Master --- 三维BFS(用BFS求最短路)
POJ 2251 题目大意: 给出一三维空间的地牢,要求求出由字符'S'到字符'E'的最短路径,移动方向可以是上,下,左,右,前,后,六个方向,每移动一次就耗费一分钟,要求输出最快的走出时间.不同L层 ...
- POJ 2049— Finding Nemo(三维BFS)10/200
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013497151/article/details/29562915 海底总动员.... 这个题開始 ...
- POJ.2251 Dungeon Master (三维BFS)
POJ.2251 Dungeon Master (三维BFS) 题意分析 你被困在一个3D地牢中且继续寻找最短路径逃生.地牢由立方体单位构成,立方体中不定会充满岩石.向上下前后左右移动一个单位需要一分 ...
- AOJ.866 飞越原野 (三维BFS)
AOJ.866 飞越原野 (三维BFS) 题意分析 点我挑战题目 相比于普通的BFS,要多一维来记录当前剩余的体力.而且还要额外的一层循环来处理,飞过的路程. 代码总览 #include <io ...
- hdu 1885 Key Task (三维bfs)
题目 之前比赛的一个题, 当时是崔老师做的,今天我自己做了一下.... 还要注意用bfs的时候 有时候并不是最先到达的就是答案,比如HDU 3442 这道题是要求最小的消耗血量伤害,但是并不是最先到 ...
- HDU 1885 Key Task(三维BFS)
题目链接 题意 : 出口不止一个,一共有四种颜色不同的门由大写字母表示,而钥匙则是对应的小写字母,当你走到门前边的位置时,如果你已经走过相应的钥匙的位置这个门就可以走,只要获得一把钥匙就可以开所有同颜 ...
随机推荐
- java编程接口(6) ------ 图标
本文提出了自己的学习笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 能够在JLable或者不论什么从AbstractButton继承的组件使用Ic ...
- 介绍一款轻量级js控件:easy.js
easy.js 组件高速入门 在使用 easy.js 的组件之前,假设能花上几分钟看看以下的一些简单的入门指南,在使用组件的时候你会更加的得心应手. 简单性 easy.js 的组件在 UI(界面) 层 ...
- Hibernate HQL详细说明
1. Hibernate HQL详细说明 1.1. hql一个简短的引论 Hibernate它配备了一种非常强大的查询语言.这种语言看起来非常像SQL.但是不要 要对相位的语法结构似,HQL是很有 ...
- 【世外桃源】福音节目 swtychina.com
[世外桃源]福音节目 今天小编满怀热情,带着激动地心情,颤抖的双手,以“大无畏的精神,高山仰止的情操”为大家郑重推荐很好的一个福音节目: <世外桃源>, 哎,不对,貌似从2013年初开始& ...
- 【Git使用具体解释】EGit使用具体解释
此系列文章写给那些打算使用Git或正在使用Git,但对Git还不是非常理解的程序员们,希望能帮助大家在学习和使用Git的过程中少走弯路,并以最少的时间和代价来熟悉Git,让Git可以辅助很多其它的开发 ...
- WindowState注意事项
本文将分析具体WindowState个别关键的成员变量和成员函数. Window #3 Window{20dd178e u0 com.android.mms/com.android.mms.ui.Co ...
- 在SSMS里查看TDS数据包内容
原文:在SSMS里查看TDS数据包内容 在SSMS里查看TDS数据包内容 摘抄自<SQLSERVER2012实施与管理实战指南> 要具体查看TDS数据库的内容,我们可以: 用NETWORK ...
- MCC460MNC08
因为搜得辛苦,正好也写点关于我morto工作有关的事情,给大家和我一样扫盲,哈哈 The GSM Mobile Country Code (MCC) is different from the i ...
- 基于Gsoap 的ONVIF C++ 库
https://github.com/xsmart/onvifcpplib 该库支持ProfileS 和ProfileG,目前正在开发哪些,现拥有支持Event 下面是一个client样本 int _ ...
- ffmpeg和opencv 播放视频文件和显示器
ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...