1006: Hero In Maze

时间限制: 1000 Sec  内存限制: 64 MB

提交: 72  解决: 22

题目描述

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”。

样例输入

4 4 10
....
....
....
S**P
0 0 0

样例输出

YES

提示

报告参见http://acm.zjgsu.edu.cn/Report/1005/1005.html

总是望着曾经的空间发呆,那些说好不分开的朋友不在了,转身,陌路。 熟悉的,安静了, 安静的,离开了, 离开的,陌生了, 陌生的,消失了, 消失的,陌路了。


#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
struct my
{
int x,y;
int cns;
} me[10005];
int ed,dx,dy,n,m,t,used;
char map[50][50];
int tu[4][2]= {{1,0},{0,1},{-1,0},{0,-1}};
bool flag;
bool check(my a)
{
if(a.x>0&&a.x<=n&&a.y>0&&a.y<=m&&map[a.x][a.y]!='*')
return true;
return false;
}
void bfs(my stt)
{
my now,next;
stt.cns=0;
used=ed=0;
me[ed++]=stt;
map[stt.x][stt.y]='*';
while(used<ed)
{
now=me[used++];
for(int i=0; i<4; ++i)
{
next.x=now.x+tu[i][0];
next.y=now.y+tu[i][1];
next.cns=now.cns+1;
if(check(next))
{
if(map[next.x][next.y]=='P'&&next.cns<=t)
{
flag=true;
return;
}
map[next.x][next.y]='*';
me[ed++]=next;
}
}
}
return;
}
int main()
{
while(scanf("%d %d %d",&m,&n,&t)!=EOF&&(n&&m&&t))
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; ++j)
{
cin>>map[i][j];
if(map[i][j]=='S')
{
dx=i;
dy=j;
}
}
}
flag=false;
my temp;
temp.x=dx;
temp.y=dy;
bfs(temp);
printf(flag?"YES\n":"NO\n");
}
return 0;
}

YTU 1006: Hero In Maze的更多相关文章

  1. 1006: Hero In Maze

    1006: Hero In Maze 时间限制: 1000 Sec  内存限制: 64 MB提交: 417  解决: 80[提交][状态][讨论版][命题人:外部导入] 题目描述 500年前,Jess ...

  2. Hero In Maze

    Hero In Maze 时间限制(普通/Java):1000MS/10000MS          执行内存限制:65536KByte 描写叙述 500年前,Jesse是我国最卓越的剑客. 他英俊潇 ...

  3. TZOJ 3305 Hero In Maze II(深搜)

    描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他急忙赶到迷宫,开 ...

  4. Hero In Maze(BFS广搜)

    Description 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了, ...

  5. TOJ 1005 Hero In Maze (深搜)

    描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^. 突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他知道公主在迷宫 ...

  6. 【TOJ 3305】Hero In Maze II

    描述 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了,他急忙赶到迷宫,开 ...

  7. 3305: Hero In Maze II (优先队列+bfs)

    Description 500年前,Jesse是我国最卓越的剑客.他英俊潇洒,而且机智过人^_^.突然有一天,Jesse心爱的公主被魔王困在了一个巨大的迷宫中.Jesse听说这个消息已经是两天以后了, ...

  8. ACM-Hero In Maze

                                                   Hero In Maze 时间限制(普通/Java):1000MS/10000MS          运行 ...

  9. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

随机推荐

  1. 创建ArrayList集合对象并添加元素

    ArrayListDemo.java import java.util.ArrayList; /* * 为什么出现集合类: * 我们学习的是面向对象编程语言,而面向对象编程语言对事物的描述都是通过对象 ...

  2. Java学习之流Stream理解(一)

    缓存可以说是I/O的一种性能优化.缓存流为I/O流增加了内存缓冲区.有了缓冲区,使得在流上执行skip().mark()和reset()方法都称为可能. 1.BufferedInputStream 类 ...

  3. 数组和String几种方法的需要注意的地方

    array的方法总结 会更改原来的的数组 push.unshift方法,返回length.增加值得就返回length,其他返回该元素 pop,shift返回该元素 reverse返回该元素 splic ...

  4. python017 Python3 模块

    Python3 模块在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python 提供了一个办法, ...

  5. 洛谷P2058 海港

    题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况:对于第i艘到达的船 ...

  6. 【HDOJ5640】King's Cake(数论)

    题意: 思路: #include<cstdio> #include<cstdlib> #include<iostream> #include<algorith ...

  7. 内存管理(——高质量程序设计语言C/C++第16章)

    内存的分配方式: 1.静态存储区分配:全局变量,static变量等,在程序编译时已经分配了存储内存,在程序运行的整个期间一直存在 2.程序的堆栈上:程序的局部变量,包括程序的形参等,只存在于程序的运行 ...

  8. UVA 861 组合数学 递推

    题目链接 https://vjudge.net/problem/UVA-861 题意: 一个国际象棋棋盘,‘象’会攻击自己所在位置对角线上的棋子.问n*n的棋盘 摆放k个互相不攻击的 '象' 有多少种 ...

  9. codevs——2822 爱在心中

    2822 爱在心中  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description “每个人都拥有一个梦,即使彼此不相 ...

  10. scoi2018游记

    day1: t1点分树 冬令营上jry讲过原题,t2启发式合并+解二次同余方程 预计100+100+0 结果t1卡内存,t2模数太大.导致调试到没有写t3 最后t1 85 t2 15 要是我会o1快速 ...