HDOJ_1010 Tempter of the Bone
http://acm.hdu.edu.cn/showproblem.php?pid=1010
奇偶剪枝:
可以把map看成这样:
0 1 0 1 0 1
1 0 1 0 1 0
0 1 0 1 0 1
1 0 1 0 1 0
0 1 0 1 0 1
从为 0 的格子走一步,必然走向为 1 的格子
从为 1 的格子走一步,必然走向为 0 的格子
即:
0 ->1或1->0 必然是奇数步
0->0 走1->1 必然是偶数步
结论:
所以当遇到从 0 走向 0 但是要求时间是奇数的,或者, 从 1 走向 0 但是要求时间是偶数的 都可以直接判断不可达!
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#define N 10 char maps[N][N];
int dir[][] = {{, }, {, }, {-, }, {, -}};
int m, n, t, sx, sy, ex, ey, f; void DFS(int x, int y , int d)
{
int i, a, b, p, q;
if(x < || x >= m || y < || y >= n)
return ;
if(x == ex && y == ey && d == t)f = ;
if(f == )
return ;
p = t - d;
q = abs(x - ex) + abs(y - ey);
if(p < q || (p % == && q % != ) || (p % != && q % == ))return ;
for(i = ; i < ; i++)
{
a = x + dir[i][];
b = y + dir[i][];
if(a >= && a < m && b >= && b < n && maps[a][b] != 'X')
{
maps[a][b] = 'X';
DFS(a, b, d + );
maps[a][b] = '.';
}
}
return ;
}
int main()
{
int i, j, wall;
while(scanf("%d%d%d", &m, &n, &t), m != || n != || t != )
{
f = wall = ;
for(i = ; i < m ; i++)
{
scanf(" ");
for(j = ; j < n ; j++)
{
scanf("%c", &maps[i][j]);
if(maps[i][j] == 'S')sx = i, sy = j;
else if(maps[i][j] == 'D')ex = i, ey = j;
else if(maps[i][j] == 'X')wall++;
}
}
if(m * n - wall < t)
{
printf("NO\n");
continue;
}
maps[sx][sy] = 'X';
DFS(sx, sy, );
if(f == )printf("YES\n");
else printf("NO\n");
}
return ;
}
HDOJ_1010 Tempter of the Bone的更多相关文章
- 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 ...
- ZOJ 2110 Tempter of the Bone
Tempter of the Bone Time Limit: 2 Seconds Memory Limit: 65536 KB The doggie found a bone in an ...
- 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 ...
- HDU 1010 Tempter of the Bone --- DFS
HDU 1010 题目大意:给定你起点S,和终点D,X为墙不可走,问你是否能在 T 时刻恰好到达终点D. 参考: 奇偶剪枝 奇偶剪枝简单解释: 在一个只能往X.Y方向走的方格上,从起点到终点的最短步数 ...
- 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 ...
- hdoj 1010 Tempter of the Bone【dfs查找能否在规定步数时从起点到达终点】【奇偶剪枝】
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Tempter of the Bone(dfs+奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- hdu 1010 Tempter of the Bone 深搜+剪枝
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- Tempter of the Bone(dfs奇偶剪枝)
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
随机推荐
- 《自己动手写操作系统》pmtest2笔记
;DispReturn模拟一个回车的显示,(让下一个要显示的字符在下一行的开头处显示),其中edi始终指向要显示的下一个字符的位置.; ------------------------------ ...
- [ionic开源项目教程] - 第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll
第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll 1.将tab1.html的代码改为如下: <ion-content> <ion-ref ...
- CSS之可收缩的底部边框
简述 <div>用来定义文档中的分区或节,<span>用来组合文档中的行内元素.我们可以通过<div>和 <span>将HTML元素组合起来. 下面我们 ...
- GrepCode
/***************************************************************************** * GrepCode * 声明: * 最近 ...
- 【自动化测试】PO思路
http://blog.csdn.net/liubofengpython/article/details/7720078
- 更改 input type 的值
需要实现的效果:一个输入框,当输入框未获得焦点的时候,value 值为 “密码”:当输入框失去焦点的时候,输入内容显示为”*****” <input name=”password” type=” ...
- mysql的text类型长度问题
在我的概念中,mysql中的text字段应该是没有长度限制的,但是今天事实告诉我,text类型的长度是有限制的.其中mysql的text类型有64K长度限制的,MEDIUMTEXT中型是2G,LONG ...
- 转载:50个C/C++源代码网站
来源:http://www.cnblogs.com/feisky/archive/2010/03/05/1679160.html C/C++是最主要的编程语言.这里列出了50名优秀网站和网页清单,这些 ...
- HTTP长连接(Comet)实现方式示例
昨天看了comet的介绍后,虽然大概知道了comet的原理,不过没实际用过还是不太清楚,于是今天又在网上翻了一下别的网友共享的comet实现http长连接的例子,在 Comet Server Push ...
- IOS AutoLayout 遍历修改约束
self.cvv2View.hidden = YES; self.periodView.hidden = YES; [self.contentView.constraints enumerateObj ...