Hero In Maze
Hero In Maze
描写叙述
500年前,Jesse是我国最卓越的剑客。
他英俊潇洒,并且机智过人^_^。
突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中。
Jesse听说这个消息已经是两天以后了,他知道公主在迷宫中还能坚持T天,他急忙赶到迷宫,開始到处寻找公主的下落。
时间一点一点的过去。Jesse还是无法找到公主。
最后当他找到公主的时候,漂亮的公主已经死了。从此Jesse郁郁寡欢,茶饭不思。一年后追随公主而去了。T_T
500年后的今天,Jesse托梦给你,希望你帮他推断一下当年他是否有机会在给定的时间内找到公主。
他会为你提供迷宫的地图以及所剩的时间T。
请你推断他能否救出心爱的公主。
输入
题目包含多组測试数据。
每组測试数据以三个整数N,M,T(0<n, m≤20, t>0)开头,分别代表迷宫的长和高,以及公主能坚持的天数。
紧接着有M行。N列字符,由".","*"。"P","S"组成。
当中
"." 代表可以行走的空地。
"*" 代表墙壁。Jesse不能从此通过。
"P" 是公主所在的位置。
"S" 是Jesse的起始位置。
每一个时间段里Jesse仅仅能选择“上、下、左、右”随意一方向走一步。
输入以0 0 0结束。
输出
假设能在规定时间内救出公主输出“YES”,否则输出“NO”。
例子输入
....
....
....
S**P
0 0 0
例子输出
AC代码例如以下
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <queue>
#define M 1000005
#define ll long long
using namespace std; int DTx[4]={-1,0,1,0};
int DTy[4]={0,1,0,-1};
char map[25][25];
int dp[25][25];
int x,y,X,Y;
int minn;
int n,m,t; struct H{
int x,y;
int time;
}; int bfs(int h,int z)
{
int i,j;
queue <H> q;
H a,b,c;
a.x=h;
a.y=z;
a.time=0;
q.push(a);
while(!q.empty())
{
b=q.front();
q.pop();
if(b.x==X&&b.y==Y)
return b.time;
for(i=0;i<4;i++)
{
c.x=b.x+DTx[i];
c.y=b.y+DTy[i];
if(c.x>=0&&c.x<m&&c.y>=0&&c.y<n&&!dp[c.x][c.y])
{
dp[c.x][c.y]=1;
c.time=b.time+1;
q.push(c);
}
}
}
return 0;
} int main()
{
int i,j;
while(~scanf("%d%d%d",&n,&m,&t)&&(n||m||t))
{
memset(dp,0,sizeof dp);
for(i=0;i<m;i++)
cin>>map[i];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(map[i][j]=='S')
{x=i;y=j;dp[i][j]=1;}
else if(map[i][j]=='P')
{X=i;Y=j;}
else if(map[i][j]=='*')
dp[i][j]=1; //printf("%d %d %d %d\n",x,y,X,Y);
minn=bfs(x,y);
/*for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout<<dp[i][j]<<" ";
cout<<endl;
}*/
//printf("%d\n",minn);
if(minn==0)
{
printf("NO\n");
continue;
}
if(minn<=t)
printf("YES\n");
else printf("NO\n");
}
return 0;
}
Hero In Maze的更多相关文章
- 1006: Hero In Maze
1006: Hero In Maze 时间限制: 1000 Sec 内存限制: 64 MB提交: 417 解决: 80[提交][状态][讨论版][命题人:外部导入] 题目描述 500年前,Jess ...
- YTU 1006: Hero In Maze
1006: Hero In Maze 时间限制: 1000 Sec 内存限制: 64 MB 提交: 72 解决: 22 题目描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人 ...
- TZOJ 3305 Hero In Maze II(深搜)
描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他急忙赶到迷宫,开 ...
- Hero In Maze(BFS广搜)
Description 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了, ...
- TOJ 1005 Hero In Maze (深搜)
描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^. 突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他知道公主在迷宫 ...
- 【TOJ 3305】Hero In Maze II
描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他急忙赶到迷宫,开 ...
- 3305: Hero In Maze II (优先队列+bfs)
Description 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了, ...
- ACM-Hero In Maze
Hero In Maze 时间限制(普通/Java):1000MS/10000MS 运行 ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
随机推荐
- 信安实验-RC4加密算法
RC4加密算法 算法具体就不介绍了,应信安老师要求整理及掌握. #include<bits/stdc++.h> using namespace std; const int N=256; ...
- mysqlbinlog备份和mysqldump备份
-bash : mysqldump: command not found -bash : mysqlbinlog:command not found 首先得知道mysql命令或mysqldump命令的 ...
- 【bzoj4242】水壶 BFS+最小生成树+倍增LCA
题目描述 JOI君所居住的IOI市以一年四季都十分炎热著称. IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有P个,编号为1...P. JOI君只能进入 ...
- BZOJ 1007 [HNOI2008]水平可见直线 ——计算几何
用了trinkle的方法,半平面交转凸包. 写了一发,既没有精度误差,也很好写. #include <map> #include <ctime> #include <cm ...
- BZOJ 2005 [Noi2010]能量采集 ——Dirichlet积
[题目分析] 卷积一卷. 然后分块去一段一段的求. O(n)即可. [代码] #include <cstdio> #include <cstring> #include < ...
- [BZOJ3545] [ONTAK2010]Peaks(线段树合并 + 离散化)
传送门 由于困难值小于等于x这个很恶心,可以离线处理,将边权,和询问时的x排序. 每到一个询问的时候,将边权小于等于x的都合并起来再询问. .. 有重复元素的线段树合并的时间复杂度是nlog^2n # ...
- 常州模拟赛d2t3 小X的佛光
平日里最喜欢做的事就是蒸发学水.[题目描述]小 X 所在的城市 X 城是一个含有 N 个节点的无向图,同时,由于 X 国是一个发展中国家,为了节约城市建设的经费,X 国首相在建造 X 城时只建造 N ...
- Java 面试参考指南 — 同步
同步 在多线程程序中,同步修饰符用来控制对临界区代码的访问.其中一种方式是用synchronized关键字来保证代码的线程安全性.在Java中,synchronized修饰的代码块或方法不会被多个线程 ...
- Office 中的各种小tips(更新中)
1.Word 中打字输入会擦掉之后原有字符,出现“吃字”的情况? 要将“改写”切换为“插入”,最简单的方法就是点击键盘上小键盘旁边的“insert”键. 其实仔细观察的话,在word文档下方,会看到如 ...
- 关于虚拟机IP网段和公司内网网段的问题?
开发四年只会写业务代码,分布式高并发都不会还做程序员?->>> 请教一个问题,为了解决电脑换网络环境就连不上虚拟机的问题,我虚拟机使用的nat模式,我的VMnet8IP是192 ...