题意:

  必须在第t秒走到格子D上,S为起点,D为终点,点就是可以走,X就是墙。

思路:

  将迷宫外围四面都筑墙‘X’。深度搜索+奇偶剪枝,再加一个剪枝“无法在指定时间内到达”。

 #include <iostream>
#include <vector>
#include <string>
#include <math.h>
using namespace std;
vector<string> v;
int n,m;
int x_1,y_1,x_2,y_2;
bool maze(int x,int y,int t) //目前走到第n行m列的位置
{
if(t==) //若t小于0,则检查四个方向是否有门D
{
if(x_2==x && (y_2==y-||y_2==y+))
return true;
if(y_2==y && (x_2==x-||x_2==x+))
return true;
}
else //若不为0,调用4次此函数,分别是四个方向,若该方向不能走,则不调用
{
t--;
v[x][y]=''; //封掉该格子
if(v[x-][y]=='.' && maze(x-,y,t)==true )
return true;
if(v[x+][y]=='.' && maze(x+,y,t)==true )
return true;
if(v[x][y-]=='.' && maze(x,y-,t)==true )
return true;
if(v[x][y+]=='.' && maze(x,y+,t)==true )
return true;
}
v[x][y]='.'; //开放该格子
return false;
}
int main()
{
int t,i,j; //x为行,y为列。
string temp="",tem="XXXXXXXX";
while(scanf("%d %d %d",&n,&m,&t)&&n!=)
{
v.push_back(tem);
for(i=;i<n;i++)
{
cin>>temp;
temp='X'+temp;
temp+='X'; //围起来
v.push_back(temp);
if(temp.find('S')!=-)
{
x_1=i+;y_1=temp.find('S');
}
if(temp.find('D')!=-)
{
x_2=i+;y_2=temp.find('D');
}
}
v.push_back(tem); if( abs(y_2-y_1)+abs(x_2-x_1)>t)
printf("NO\n");
else if( (abs(y_2-y_1)+abs(x_2-x_1))%!=t% )
printf("NO\n");
else if(maze(x_1,y_1,t)==true)
printf("YES\n");
else
printf("NO\n");
v.clear();
}
return ;
}

1010

题目直译:

小狗在一个古老的迷宫里发现一根骨头,迷宫让它很惊讶。但是,当他拿起骨头,迷宫开始振动,而小狗能够感觉到地面在下沉。
它意识到骨头是个陷阱,他准备分身一试逃出迷宫。
迷宫是个矩形,其大小是N*M,有个门在迷宫里。在一开始,门是关的,它将会在第T秒开一小段时间(小于1秒)。
因此,小狗必须在刚好T秒时到达门的旁边。每一秒,小狗能够移动一步到当前块块的上、下、左、右的块。
一旦它进入一个块,这块的地面将开始下沉并消失在下一秒(即每个位置只能走一次)。它不能够呆在一个块上超过1秒,也不能进入一个已走过过的块。
这只小狗能活下去吗?请帮助他。

输入:第一行包括3个整数N、M、T,分别代表迷宫的大小、迷宫门会开的时刻。
接下来N行是迷宫的布局,每行包括M个字符,只能是以下四种之一:
X:一面墙,不能进入
S:狗的起点
D:迷宫门
.:一个空块。

1<N
M<7
0 < T < 50

HDU 1010 Tempter of the Bone 骨头诱惑(DFS+剪枝)的更多相关文章

  1. HDU 1010 Tempter of the Bone (ZOJ 2110) DFS+剪枝

    传送门: HDU:http://acm.hdu.edu.cn/showproblem.php?pid=1010 ZOJ:http://acm.zju.edu.cn/onlinejudge/showPr ...

  2. HDU 1010 Tempter of the Bone --- DFS

    HDU 1010 题目大意:给定你起点S,和终点D,X为墙不可走,问你是否能在 T 时刻恰好到达终点D. 参考: 奇偶剪枝 奇偶剪枝简单解释: 在一个只能往X.Y方向走的方格上,从起点到终点的最短步数 ...

  3. HDU 1010 Tempter of the Bone【DFS经典题+奇偶剪枝详解】

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  4. hdu 1010 Tempter of the Bone 奇偶剪枝

      如果所给的时间(步数) t 小于最短步数path,那么一定走不到. 若满足t>path.但是如果能在恰好 t 步的时候,走到出口处.那么(t-path)必须是二的倍数. 关于第二种方案的解释 ...

  5. hdu.1010.Tempter of the Bone(dfs+奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  6. hdu 1010:Tempter of the Bone(DFS + 奇偶剪枝)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  7. Hdu 1010 Tempter of the Bone 分类: Translation Mode 2014-08-04 16:11 82人阅读 评论(0) 收藏

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  8. hdu 1010 Tempter of the Bone 深搜+剪枝

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  9. hdu 1010 Tempter of the Bone(dfs)

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

随机推荐

  1. 开发一个android项目后的总结

    首先是自己在OneNote上面记录了一些流水: 个人感觉这一路开发下来,学到了一些知识,也碰到了许许多多的问题,也解决了一些问题.总体来看,有几点(个人观点,不支持任何讨论): 1.Java是很优秀的 ...

  2. Jquery的parent和parents(找到某一特定的祖先元素)用法

    <!-- parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合. parents则是取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素).可以通过一个可选的表达式进行筛选. ...

  3. 使用tuple统计文件中单词的个数

    name = input("Enter file:") if len(name) < 1 : name = "input.txt" fhand = ope ...

  4. 编写自定义GenericServlet

    用途: 编写自定义GenericServlet类后,子类只需继承这个类,就可以直接使用ServletConfig的config对象和ServletConfig接口的方法,而不需要init()方法获取c ...

  5. 【Kafka】《Kafka权威指南》入门

    发布与订阅消息系统 在正式讨论Apache Kafka (以下简称Kafka)之前,先来了解发布与订阅消息系统的概念, 并认识这个系统的重要性.数据(消息)的发送者(发布者)不会直接把消息发送给接收 ...

  6. Exadata 12.2.1.1.0 Highlights

    突然发现,在中国农历新年的这几年里,Exadata 12.2版本已经发布了. 本起去docs.oracle.com上看看它的新特性,结果发现文档还没有更新: 下面是找到的一些资料,让我们来一睹为快吧: ...

  7. Vue axios 中提交表单数据(含上传文件)

    伟大的画家都是先从模仿开始 的,我写的不好,很多还是抄袭,就是想提高自己的水平,没准坚持下来,我就变成一个厉害的角色了呢?

  8. POJ1845 Sumdiv 数学?逆元?

    当初写过一篇分治的 题意:求A^B的所有因子之和,并对其取模 9901再输出 对于数A=p1^c1+p2^c2+...+pn*cn,它的所有约数之和为(1+p1+p1^2+p1^3+...+p1^(c ...

  9. 使用jdk的xjc命令由schema文件生成相应的实体类

    xjc D:\operate-process.xsd -d D:\workspace\wmsc\src\main\java -p com.yd.wmsc.util operate-process.xs ...

  10. 15-----float(浮动)

    浮动 浮动是css里面布局最多的一个属性,也是很重要的一个属性. float:表示浮动的意思.它有四个值. none: 表示不浮动,默认 left: 表示左浮动 right:表示右浮动 看一个例子: ...