ZOJ2110 HDU1010 搜索 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的更多相关文章
- 【奇偶剪枝】【HDU1010】Tempter of the Bone
题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...
- 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 ...
- HDU1010:Tempter of the Bone(dfs+剪枝)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 //题目链接 http://ycool.com/post/ymsvd2s//一个很好理解剪枝思想的博客 ...
- 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 ...
- HDU1010 Tempter of the Bone【小狗是否能逃生----DFS奇偶剪枝(t时刻恰好到达)】
Tempter of the Bone Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- ZOJ 2110 Tempter of the Bone(条件迷宫DFS,HDU1010)
题意 一仅仅狗要逃离迷宫 能够往上下左右4个方向走 每走一步耗时1s 每一个格子仅仅能走一次且迷宫的门仅仅在t时刻打开一次 问狗是否有可能逃离这个迷宫 直接DFS 直道找到满足条件的路径 ...
- Tempter of the Bone 搜索---奇偶性剪枝
Tempter of the Bone Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) ...
- hdu1010 Tempter of the Bone(深搜+剪枝问题)
Tempter of the Bone Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission( ...
- 【HDU - 1010】Tempter of the Bone(dfs+剪枝)
Tempter of the Bone 直接上中文了 Descriptions: 暑假的时候,小明和朋友去迷宫中寻宝.然而,当他拿到宝贝时,迷宫开始剧烈震动,他感到地面正在下沉,他们意识到这是一个陷阱 ...
随机推荐
- hdu 3062 2-Sat入门
开始学习2-Sat,前面看了对称性解决2-sat的ppt,很有帮助. 题意:n对夫妻,夫妻需要出席一人,给出不相容的关系,求每对是否能完成出席方案. 思路:通过关系建图,Tarjan缩点,然后进行判断 ...
- 数据库学习任务二:数据库连接对象SqlConnection
数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...
- js中面向对象的写法
function Circle(r){ this.r = r; }//构造(实例对象的)函数[思路二:这是一个类] Circle.PI = 3.14159; //属性 Circle.prototype ...
- 结对编程1---基于Flask的四则运算题目生成器
项目代码地址 / WEB应用地址 / 合作伙伴iFurySt博文链接 需求分析 本次程序是基于原有的控制台四则运算器的基础上,改成WEB的形式,同时还增加了一些新的功能.同时因为交互方式的改变,代码也 ...
- 【Alpha阶段汇总】成果展示与体验总结
一.燃尽图 二.软件截图 三.代码与图片.音乐素材仓库 git仓库 四.问题与总结 1.git提交问题 之前创建的仓库地址是http://git.oschina.net/8265559926/grou ...
- Swing-GridBagLayout用法-入门
注:本文内容转自:Java Layout总结-GridBagLayout.内容根据笔者理解稍有整理. GridBagLayout布局管理器:这就是最复杂的一个布局管理器了,网格包布局.在此布局中,组件 ...
- 201521123016 《Java程序设计》第8周学习总结
1. 本周学习总结 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 1.删除元素的时候从最后一个元素开始,避免删除元素后位置发生变化而导致有些元素没有删 ...
- 假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?
假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?#!/bin ...
- 使用vue-router实现返回
在vue项目中使用vue-router做路由,做到返回页面的逻辑时,由于window.history.back满足不了返回的需要,故想通过 window.addEventListener('popst ...
- jmeter通过BeanShell 脚本,实现对http请求参数的加密
jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的 ...