(step4.3.1) hdu 1010(Tempter of the Bone——DFS)
题目大意:输入三个整数N,M,T。在接下来的N行、M列会有一系列的字符。其中S表示起点,D表示终点。 .表示路 。 X表示墙。。。问狗能有在T秒时到达D。如果能输出YES,
否则输出NO
解题思路:DFS+剪枝
代码如下:
/*
* 1010_3.cpp
*
* Created on: 2013年8月16日
* Author: Administrator
*/ #include <iostream> using namespace std; bool flag;
int N, M, T;
int si, sj;
int ei, ej; const int maxn = 8;
int dir[4][2] = { { 1, 0 }, { -1, 0 }, { 0, 1 }, { 0, -1 } };
char map[maxn][maxn]; bool checkEdge(int x, int y) {
if (!(x < 1 || x > N || y < 1 || y > M)) {
return true;
} return false;
} void dfs(int curX, int curY, int curT) {
if (flag) {//如果找到出口,直接返回
return;
} if (curT > T) {//如果当前花费的时间大于T,就返回
return;
} //花费的时间加上剩余需要的时间若大于T,返回
if (curT + abs(curX - ei) + abs(curY - ej) > T) {
return;
} //若到达出口最短距离和剩余时间的奇偶性不同,返回
if ((abs(curX - ei) + abs(curY - ej)) % 2 != abs(T - curT) % 2) {
return;
} if (curX == ei && curY == ej && curT == T) {
printf("YES\n");
flag = true;
return;
} int i;
for (i = 0; i < 4; ++i) {
int nextX = curX + dir[i][0];
int nextY = curY + dir[i][1]; if (checkEdge(nextX, nextY)) {
if (map[nextX][nextY] != 'X') {
map[nextX][nextY] = 'X';//使其不可达到
dfs(nextX, nextY, curT + 1);
map[nextX][nextY] = '.';//回溯时,恢复原来的状态
}
}
}
}
int main() {
while (scanf("%d%d%d", &N, &M, &T) != EOF, N || M || T) {
getchar();
int k = 0;
int i, j;
flag = false;
memset(map, 0, sizeof(map));
for (i = 1; i <= N; ++i) {
for (j = 1; j <= M; ++j) {
scanf("%c", &map[i][j]); if (map[i][j] == 'S') {
si = i;
sj = j;
map[i][j] = 'X'; //将开始位置置为不可达状态
} else if (map[i][j] == 'D') {
ei = i;
ej = j;
} if (map[i][j] != 'X') {
++k;
}
}
getchar();
} if (k < T) {//若可走的点数小于T,则输出NO
printf("NO\n");
continue;
} dfs(si, sj, 0); if (!flag) {
printf("NO\n");
}
}
}
(step4.3.1) hdu 1010(Tempter of the Bone——DFS)的更多相关文章
- HDU 1010 Tempter of the Bone --- DFS
HDU 1010 题目大意:给定你起点S,和终点D,X为墙不可走,问你是否能在 T 时刻恰好到达终点D. 参考: 奇偶剪枝 奇偶剪枝简单解释: 在一个只能往X.Y方向走的方格上,从起点到终点的最短步数 ...
- 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+奇偶剪枝)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意: 输入 n m t,生成 n*m 矩阵,矩阵元素由 ‘.’ 'S' 'D' 'X' 四 ...
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1010 这题就是问能不能在t时刻走到门口,不能用bfs的原因大概是可能不一定是最短路路径吧. 但是这题要过除了细心 ...
- HDU 1010 Tempter of the Bone DFS(奇偶剪枝优化)
需要剪枝否则会超时,然后就是基本的深搜了 #include<cstdio> #include<stdio.h> #include<cstdlib> #include ...
- HDU 1010 Tempter of the Bone (DFS+可行性奇偶剪枝)
<题目链接> 题目大意:一个迷宫,给定一个起点和终点,以及一些障碍物,所有的点走过一次后就不能再走(该点会下陷).现在问你,是否能从起点在时间恰好为t的时候走到终点. 解题分析:本题恰好要 ...
- HDOJ.1010 Tempter of the Bone (DFS)
Tempter of the Bone [从零开始DFS(1)] 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HDOJ.1010 Tem ...
- 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 奇偶剪枝
如果所给的时间(步数) t 小于最短步数path,那么一定走不到. 若满足t>path.但是如果能在恰好 t 步的时候,走到出口处.那么(t-path)必须是二的倍数. 关于第二种方案的解释 ...
随机推荐
- mysql慢查优化总结
1.优化sql语句结构 or改成union,使用start,limit 先只查询出所有的id,然后再排序.如果查询出所有的id仍然很慢,就要仔细考虑了. 2.添加索引 mysql每次查询只能使用一个索 ...
- Session深度探索
什么是Session? web是无状态,这意味着每次页面被回传到服务器时,都重新生成一个web页面类的一个新的实例.众所周知http时无状态的协议.它不能获得客户端的信息.如果用户录入了一些信息,当跳 ...
- SqlServer数据库设计,纠结的问题,有胆你就来!
最近,小菜遇到了数据库设计上的一个问题,希望各位大侠再次,直抒己见,帮忙分析一下.也可有更好的设计,请直接提出来. 要求:数据库(SQL Server 2005)存储每个学生,单个客观题答案.分数,主 ...
- angularjs directive中@ = &使用详解
这段时间在学习angularjs,对directive指令的绑定策略弄了好久才明白,现在做下笔记方便以后查阅,若有错误欢迎指出. 为了使新的指令作用域能访问当前的作用域的一些属性,通常会使用@.=.& ...
- JavaScript--Json对象
JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何 ...
- golang byte转string 字节数组转字符串的问题
golang语言本身就是c的工具集,开发c的程序用到的大部分结构体,内存管理,携程等,golang基本都有,他只是在这个基础上又加了一些概念这里说一个很小的问题,就是字节数组转string的问题,网上 ...
- 关于常用却忘记的css,jQuery
text-indent:35px;//首行缩进 line-height:12px;//行高,高度和外层高度一样就会居中 box-shadow:inset 0px 0px 2px #ccc; conte ...
- HBase笔记--自定义filter
自定义filter需要继承的类:FilterBase 类里面的方法调用顺序 方法名 作用 1 boolean filterRowKey(Cell cell) 根据row key过滤row.如果需要 ...
- HBase笔记--编程实战
HBase总结:http://blog.csdn.net/lifuxiangcaohui/article/details/39997205 (very good) Spark使用Java读取hbas ...
- javaWeb图片验证码代码
1. [代码]初始粗糙代码 import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.a ...