博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 1010 Tempter of the Bone
阅读量:5947 次
发布时间:2019-06-19

本文共 2110 字,大约阅读时间需要 7 分钟。

题意:从开始位置走到结束位置,恰好走 t 步 YES

否则 NO

搜索题,由于是恰好走到,所以用到了奇偶剪枝

什么是奇偶剪枝,我也是刚知道

所给步数为 t ,起始位置坐标 (begin_x,begin_y), 结束位置坐标 (end_x,end_y)

两位置最短距离为 ju = abs(end_x - begin_x) + abs(end_y - begin_y)

若 t - ju 为奇数,则无论如何不能恰好走到

为偶数才有可能恰好走到

代码中 pos + dis 即 ju

代码如下:

#include
#include
#include
#include
using namespace std;int m,n,t;char map[8][8];int vis[8][8];int flag;int begin_x,begin_y,end_x,end_y;int p[][2] = {
{-1,0},{
0,1},{
1,0},{
0,-1}}; //偏移量:上,下,左,右void dfs(int x,int y,int pos) //pos 为当前已走步数{ if(flag) return ; //剪枝:已经到达目的地 if(pos > t) return ; //剪枝:步数超过 t if(x == end_x && y == end_y && pos == t) //恰好 t 步走到 { flag = 1; return ; } int dis = abs(end_x - x) + abs(end_y - y); //当前位置到结束位置的最短距离 if((t - dis - pos) % 2 != 0) return; //奇偶剪枝,很重要,不剪TLE for(int i = 0; i < 4; i ++) //搜索四个方向 { int tx = x + p[i][0]; int ty = y + p[i][1]; if(tx >= 0 && tx < m && ty >= 0 && ty < n && !vis[tx][ty] && map[tx][ty] != 'X') { vis[tx][ty] = 1; dfs(tx,ty,pos + 1); vis[tx][ty] = 0; } }}int main(){ while(~scanf("%d%d%d",&m,&n,&t) && (m || n || t)) { memset(vis,0,sizeof(vis)); flag = 0; int k = 0; for(int i = 0; i < m; i ++) { for(int j = 0 ; j < n; j++) { cin>>map[i][j]; //scanf注意回车 if(map[i][j] == 'S') { begin_x = i; begin_y = j; vis[i][j] = 1; } if(map[i][j] == 'D') { end_x = i; end_y = j; } if(map[i][j] == 'X') k ++; } } if((m * n - k) > t) dfs(begin_x,begin_y,0); if(flag) printf("YES\n"); else printf("NO\n"); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/Houheshuai/p/3711635.html

你可能感兴趣的文章
JS中加载cssText延时
查看>>
常用的脚本编程知识点
查看>>
计算机网络术语总结4
查看>>
新手小白 python之路 Day3 (string 常用方法)
查看>>
soapUI的简单使用(webservice接口功能测试)
查看>>
框架 Hibernate
查看>>
python-while循环
查看>>
手机端上传图片及java后台接收和ajaxForm提交
查看>>
【MSDN 目录】C#编程指南、C#教程、ASP.NET参考、ASP.NET 4、.NET Framework类库
查看>>
jquery 怎么触发select的change事件
查看>>
angularjs指令(二)
查看>>
<气场>读书笔记
查看>>
领域驱动设计,构建简单的新闻系统,20分钟够吗?
查看>>
web安全问题分析与防御总结
查看>>
React 组件通信之 React context
查看>>
Linux下通过配置Crontab实现进程守护
查看>>
ios 打包上传Appstore 时报的错误 90101 90149
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
密码概述
查看>>
jQuery的技巧01
查看>>