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 ...
随机推荐
- HDU 2602 (简单的01背包) Bone Collector
很标准的01背包问题 //#define LOCAL #include <algorithm> #include <cstdio> #include <cstring&g ...
- POJ3592 Instantaneous Transference tarjan +spfa
链接:http://poj.org/problem?id=3592 题意:题目大意:给定一个矩阵,西南角为出发点,每个单位都有一订价值的金矿(#默示岩石,不成达,*默示时佛门,可以达到指定单位),队# ...
- Hadoop实战课程
Hadoop生态系统配置Hadoop运行环境Hadoop系统架构HDFS分布式文件系统MapReduce分布式计算(MapReduce项目实战)使用脚本语言Pig(Pig项目实战)数据仓库工具Hive ...
- 一个小面试题sql
一. 问答题 1简要说明分页是如何实现的. A:sqlserver: Select top(pagesize) * from student where id not in( ...
- Vim+Ctags+Taglist组合:
Ctags 1,sudo apt-get install Ctags //会提示最新版本的名字:Exuberant Ctags 2,在源码的最上层目录执行:ctags -R //会在当前目录先生成一个 ...
- cocos2d-x使用python脚本创建项目的简单方法
本文有CC原创,转载请注明地址:http://blog.csdn.net/oktears/article/details/13297003 在cocos2d-x2.1.4以上的版本中,取消了使用vs模 ...
- 编译busybox错误
为了制作一个文件系统,首先要用busybox编译出文件系统所需要的应用程序.在下载了busybox-1.13.0.tar.bz2后,编译出现如下错误: In file included from /o ...
- 《摇滚南京》——"人生下来就是孤独"
昨天是纪录片<摇滚南京>东南大学站的展映分享会 我不是一个摇滚迷,作为学渣狗看论文.码代码的时候会塞个耳机,平时其实民谣听得更多一点,摇滚觉得有点高大上.所以整好趁着学校有活动,也跟着高大 ...
- vim的保存误认为utf8问题
用vim改脚本改到一处写到'太原':w一下,再打开,,结果给乱码了...我默认sql是用cp936的,,,想到到和记录本的联通问题一样.... 可能会问我为什么不用utf8,,,,因为ms200 ...
- aspose.word 在书签处插入符号
doc.Range.Bookmarks["CBJYQQDFS110"].Text = ""; Aspose.Words.DocumentBuilder buil ...