Tempter of the Bone HDU - 1010(DFS + 奇偶剪枝)
题目
这个题思路不难,就是不用奇偶剪枝的话会出现TLE,奇偶剪枝说白了就是一个矩阵分成两种区域,从一种区域走到另一个区域必是奇数步数,从一种区域走回自己的区域必是偶数步数,就算出现了障碍物这个结论依旧有效,因为绕开障碍物的步数必是偶数
AC代码
#include <iostream>
using namespace std;
int n, m, t;
int xx[4] = { 0, -1, 0, 1 };
int yy[4] = { 1, 0, -1, 0 };
int dogx, dogy, doorx, doory;
char maze[7][7];
int vis[7][7];
inline int log(int x, int y)
{if (x >= 0 && y >= 0 && x < n && y < m && !vis[x][y] && (maze[x][y] == '.' || maze[x][y] == 'D'))return 1;return 0;
}
int dfs(int curt, int x, int y)
{if (t == curt)if (maze[x][y] == 'D')return 1;elsereturn 0;int flag = 0;for (int i = 0; i < 4; ++i){if (!log(x + xx[i], y + yy[i]))continue;vis[x + xx[i]][y + yy[i]] = 1;flag = dfs(curt + 1, x + xx[i], y + yy[i]);if (flag)return flag;vis[x + xx[i]][y + yy[i]] = 0;}return 0;
}
int main()
{while (1){cin >> n >> m >> t;if (n == 0 && m == 0 && t == 0)break;for (int i = 0; i < n; ++i)for (int j = 0; j < m; ++j){vis[i][j] = 0;cin >> maze[i][j];if (maze[i][j] == 'S')dogx = i, dogy = j;if (maze[i][j] == 'D')doorx = i, doory = j;}int minDist = doorx > dogx ? doorx - dogx : dogx - doorx;minDist += doory > dogy ? doory - dogy : dogy - doory;int flag = 1;if (minDist % 2){if (!(t % 2))flag = 0;}elseif (t % 2)flag = 0;if (flag){vis[dogx][dogy] = 1;flag = dfs(0, dogx, dogy);}if (flag)cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}
Tempter of the Bone HDU - 1010(DFS + 奇偶剪枝)相关推荐
- hdu - 1010 dfs + 奇偶剪枝
problem - 1010 找有多少条路可以到达目的地.如果能到达的话必须在t时刻.先统计有多少个不能走的点,如果n*m-wall,(wall表示'X'点数量 )<= k 的话,一定无法在t时 ...
- HDOJ 1010 HDU 1010 Tempter of the Bone ACM 1010 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=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(DFS+奇偶剪枝)
剪枝很重要,可走的格数小于时间则减去,然后就是奇偶性剪枝 可以把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 ...
- HDU1010 Tempter of the Bone(DFS奇偶剪枝)
传送门 Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. Howe ...
- 回溯法+奇偶剪枝——Hdu 1010 Tempter of the Bone
1) 题目 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU.1010 Tempter of the Bone
文章目录 一.题目解读 1.原题 2.分类 3.题意 4.输入输出格式 5.数据范围 二.题解参考 1.总体思路 2.思路① (1).分析 (2).AC代码 三.评价与后话 1.评价 2.奇偶剪枝0- ...
- HDU 1010 Tempter of the Bone heuristic 修剪
的问题是,在测试修剪. 应该说是更先进的应用. 由于使用的heuristic(经验)修剪.总结这方面的经验法则,别easy.我说,这也是由于先进的在线报告中的应用程序没有分析太多太好的解决这个问题,计 ...
- HDU 1010 Tempter of the Bone heuristic 剪枝法
本题就是考剪枝法了. 应该说是比较高级的应用了.因为要使用heuristic(经验)剪枝法.要总结出这个经验规律来,不容易.我说这是高级的应用也因为网上太多解题报告都没有分析好这题,给出的程序也很慢, ...
最新文章
- win8安装mysql8_windows安装mysql8详解
- oracle锁表语句执行提示无法终止当前对话_Oracle 强制中止正在执行的SQL语句
- Sublime Text 3118 集成插件汉化定制版——赵亮(碧海情天)
- Android RaingBar评分条的使用
- 基于边缘计算的森林火警监测系统
- Linux概述及centos版本介绍和下载地址
- 计算机系班级海报,系部动态 | 电子系“五彩班栏”班级海报评比
- Gitbook 常用命令
- Java面试官:Kafka集群管理
- Leetcode142. Linked List Cycle II环形链表2
- php无人点餐,东营_无人餐厅来了! 自助点餐、自动上菜 , 没有一个服务员!_胜利社区_东营论坛_油城茶座...
- matlab读取气象数据,基于MATLAB实现3种气象数据的读取和绘图
- ace unlck工具下载_iPhoneX如何解锁ID激活锁
- tp link虚拟服务器设置,TP-Link路由器如何设置UPNP开启【设置步骤】
- Unity InputField光标位置不对
- coalesce函数的用法
- usaco-5.1-fc-passed
- phpword 利用phpword将信息导出成word文档进行下载
- 线性代数第六版第一章
- 武汉电信到武汉铁通和武汉网通和武汉长城宽带的距离