传送门:Tempter
of the Bone

大意是给一个矩阵,叫你是否可以在给定的可走路径上不重复地走,在最后一秒走到终点。

我用了两个剪枝,且称其为简直001和剪枝002,事实证明001不要都可以,002不要也能过--||。就当练习一下剪枝。

特别是002很有用:

if( d % 2 != (Time-t) % 2 )

return false ; (d=~x+~y)

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<string.h>
#include<cmath>
using namespace std;
const int INF=10000000;
int dis[8][8];
char c[8][8];
int x[]={0,-1,0,1};
int y[]={1,0,-1,0};
int sx,sy;
int n,m,t;
int fx,fy;
void _Searchdis(int xx,int yy)
{
for(int i=0;i<4;i++)
if(xx+x[i]>=1&&xx+x[i]<=n&&yy+y[i]>=1&&yy+y[i]<=m)
if(c[xx+x[i]][yy+y[i]]!='X')
if(dis[xx][yy]+1<dis[xx+x[i]][yy+y[i]]){
dis[xx+x[i]][yy+y[i]]=dis[xx][yy]+1;
_Searchdis(xx+x[i],yy+y[i]);
}
return ;
}
bool _BFS(int xx,int yy,int steps)
{
if(xx==sx&&yy==sy&&steps==t) return true;
if(steps+dis[xx][yy]>t) return false;//剪枝1
if((abs(xx-sx)+abs(yy-sy))%2!=abs(t-steps)%2) return false;//剪枝2
for(int i=0;i<4;i++)
if(xx+x[i]>=1&&xx+x[i]<=n&&yy+y[i]>=1&&yy+y[i]<=m)
if(c[xx+x[i]][yy+y[i]]!='X')
{
c[xx+x[i]][yy+y[i]]='X';
if(_BFS(xx+x[i],yy+y[i],steps+1)) return true;
c[xx+x[i]][yy+y[i]]='.';
}
return false;
}
int main()
{
int i,j;
while(scanf("%d%d%d",&n,&m,&t)&&(n||m||t))
{
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
{
cin>>c[i][j];
if(c[i][j]=='D'){ sx=i;sy=j;}
if(c[i][j]=='S'){ fx=i;fy=j;}
dis[i][j]=INF;
}
}
dis[sx][sy]=0;
_Searchdis(sx,sy);
c[fx][fy]='X';//不要搞忘
if(_BFS(fx,fy,0)) printf("YES\n");
else printf("NO\n");
}
return 0;
}

ZOJ2110 HDU1010 搜索 Tempter of the Bone的更多相关文章

  1. 【奇偶剪枝】【HDU1010】Tempter of the Bone

    题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...

  2. Hdu1010 Tempter of the Bone(DFS+剪枝) 2016-05-06 09:12 432人阅读 评论(0) 收藏

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

  3. HDU1010:Tempter of the Bone(dfs+剪枝)

    http://acm.hdu.edu.cn/showproblem.php?pid=1010   //题目链接 http://ycool.com/post/ymsvd2s//一个很好理解剪枝思想的博客 ...

  4. hdu1010 Tempter of the Bone —— dfs+奇偶性剪枝

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 Tempter of the Bone Time Limit: 2000/1000 MS (Ja ...

  5. HDU1010 Tempter of the Bone【小狗是否能逃生----DFS奇偶剪枝(t时刻恰好到达)】

    Tempter of the Bone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u ...

  6. ZOJ 2110 Tempter of the Bone(条件迷宫DFS,HDU1010)

    题意  一仅仅狗要逃离迷宫  能够往上下左右4个方向走  每走一步耗时1s  每一个格子仅仅能走一次且迷宫的门仅仅在t时刻打开一次  问狗是否有可能逃离这个迷宫 直接DFS  直道找到满足条件的路径 ...

  7. Tempter of the Bone 搜索---奇偶性剪枝

    Tempter of the Bone Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) ...

  8. hdu1010 Tempter of the Bone(深搜+剪枝问题)

    Tempter of the Bone Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission( ...

  9. 【HDU - 1010】Tempter of the Bone(dfs+剪枝)

    Tempter of the Bone 直接上中文了 Descriptions: 暑假的时候,小明和朋友去迷宫中寻宝.然而,当他拿到宝贝时,迷宫开始剧烈震动,他感到地面正在下沉,他们意识到这是一个陷阱 ...

随机推荐

  1. JAVA HashMap的实现原理

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt359 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存 ...

  2. fetch的使用说明

    1.RN官方文档中,可使用XMLHttpRequest var request = new XMLHttpRequest(); request.onreadystatechange = (e) =&g ...

  3. 【ACM小白成长撸】--计算单词个数

    我判断单词个数的方法,根据空格‘ ’的个数 分情况 当没有单词的时候 判断第一个符号,即a[0] == ‘\0’时,赋值给存储个数的数组 当遇到空格时,只有前面一个字符不是空格字符,后面一个字符不是空 ...

  4. 团队作业3——需求改进&系统设计

    Deadline: 2017-4-21 22:00PM,以博客发表日期为准 评分基准: 按时交 - 有分,检查的项目包括后文的四个方面 需求&原型改进 系统设计 Alpha任务分配计划 测试计 ...

  5. 201521123036 《Java程序设计》第6周学习总结

    本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 1.2 可选:使用常规方法总结其他上课内容. 对象克隆:Clon ...

  6. eclipse版本选择

    Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会. Ec ...

  7. Eclipse rap 富客户端开发总结(9) : rap上传与下载

    一 上传 上传即将文件上传到服务器上,在客户端需要写相应的脚本,服务器端需要注册相应的 handle 接受客户端的请求. 原理: Rap 的上传和下载是通过普通的 web 的方式进行上传和下载的 ,  ...

  8. CentOS克隆机器步骤,图文教程

    在上一篇文章中,主要介绍了CentOS的装机步骤,这一篇文章主要介绍如何从一台装好的CentOS克隆出另一台机器,并且配置好网络. 首先被克隆的CentOS需要关机, 右键点击被克隆的CentOS-& ...

  9. [06] Java的数据类型

    1.基本数据类型 1.1 基本数据类型 byte.chart.short.int.long.float.double.boolean 共8种数据类型为基本数据类型: 数据类型     位数     取 ...

  10. Java图的邻接矩阵实现

    /** * * 图的邻接矩阵实现 * @author John * * @param <T> */ class AMWGraph<T> { private ArrayList& ...