迷宫中回溯法的剪枝——奇偶剪枝

迷宫问题的三种实现算法 2.走迷宫2.1 问题描述给定一个迷宫Maze,并给定迷宫的路口和出口,用递归的方式搜索一条从入口到出口的可行路径(其中红色为围墙,蓝色为可行路),若存在这条路径,则打印出路径,若不存在路径,则输出信息,表示没有路径。  2.2 问题解决思路和关键点2.2.1 迷宫在程序中如何表示因为迷宫中每一个点的信息都只有两种可能(要么能走,要么不能走),我们可以以二维数组Maze[i][j]=value来存... 阅读详情

问题描述

在一个n行m列的迷宫中,每一步只能向上、下、左、右中任意方向走一格,迷宫中有围墙的地方是无法到达的。从起点s开始,能否刚好走t步,到达e。

例如在下面5行5列的迷宫中,能否恰好经过9步,从s走到e。初始位置在s上,#是围墙。



奇偶剪枝

设起点s的坐标为(sx,sy),终点e的坐标为(ex,ey);

对s的一次操作为对sx或sy进行+1或-1;

若经过t次操作后,s的坐标刚好等于e,则说从s经过t步可以到达e。

在理想情况下,s到e需要的最小步数为m

m=|ex-sx|+|ey-sy|

若t<m,肯定是无法到达的。

当t>=m时,从s到e的行走路径由两部分组成,

一部分为需要走的最少步数m;

另一部分是为了使得刚好行走t步到达e,所需要走的附加步数a,a=t-m;

这a步即为:从需要走m步的最短路径上走出去,再回到最短路径上所走的步数。

假设走出去这段路径长度为b,那回来时的路径长度一定也是b,因此,附加步数的路径长度a等于2b步。

因为走出去时,对坐标进行了b次+1或-1的操作,为使坐标再恢复到最短路径上,就需要进行b次-1或+1的操作,并且与走出去时是相反的。注意:走出去和拐回来的过程中可能参杂着最短路径上的操作,所以b是除去这些参杂操作后的步数。

如下图所示:


从s到e的黑色路径为一条最短路径,红色和蓝色路线组成的路径,为走出最短路径的路径。其中蓝色箭头是参杂着的最短路径中的操作,只有红色箭头才是走出去和拐回来的路径,如果将红色路径去掉,从s向右走,经过绿色箭头到达e,这也是一条最短路径。

因为a=2b,是个偶数,又因为a=t-m,所以当t和m的奇偶性相同时,a才能是偶数。也就是说,当t和m的奇偶性相同时,才有可能从s经过t步,到达e。

所以,当最小步数m与t同为奇数,或同为偶数时,才有可能从s经过t步,到达e。

Himall商城ExpressDaDaHelper 取消订单(线上环境) 阅读详情

相关推荐

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 849

DFS(剪枝技巧)

在说这个之前,先看道题目: Tempter of the Bone HDU - 1010 暑假的时候,小明和朋友去迷宫中寻宝。然而,当他拿到宝贝时,迷宫开始剧烈震动,他感到地面正在下沉,他们意识到这是一个陷阱!他们想尽一切办法逃出去。 迷宫是一个大小为 N*M 的长方形,迷宫中有一扇门。一开始,门是关着的,他会在第 t 秒的时间打开。因为,小明和朋友必须在第 t 秒到大门口。每一秒,他都可...

博客 2197

【iceberg数据一致性】iceberg如何保证高并发数据一致性

那么在高并发的时候,同时操作某张表时是如何运作的呢?其实这里iceberg引用了乐观锁的方法。其实在写入数据的时候是有一个验证的操作的,即在准备写入时会检查原文件和带写入文件的差异,如果存在本次写入数据以外的数据,则代表有其他操作已经更新了原文件,那么本次写入会取消,并重试写入的步骤,知道验证完成,写入完成,如此就保证了数据的一致性,并且也解决了HMS锁的问题。在使用iceberg写数据时,一直弄不清楚为什么iceberg写入快,并且能够保证数据的一致性。今天决定搞清楚这个问题,经过查询和理解,写下来。

你的博客 1042

小H和迷宫

链接:https://ac.nowcoder.com/acm/problem/15156 来源:牛客网 题目描述 小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%、b%、c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使怪兽失去尽可能多的血量 注意:每瓶药水只能用一次 输入描述: 一行,四个整数...

huantingyizhan的博客 1万+

揭秘《出塞》UE5+AIGC高效工作流 | 从创意到成片全流程解析

李季老师(老李头儿)在第四届瑞云大赛斩获季军的作品《出塞》的完整创作流程!

UWA—简单优化,优化简单! 767

〖Python接口自动化测试实战篇④〗- 接口自动化测试详解

[接口测试] 是相对来说和我们的功能测试 [最为接近的一种自动化测试手段] ,所以我们首先来学习接口测试的内容。 实现接口的开发与接口的测试,在我们的思维上、想法上、面向的态度上都是不一样的。所以大家要有一个思维上的转换,要认识了解一下 接口测试到底是做什么的、它的功能、意义在哪里。...

易编橙 · 终身成长社群,相遇已是上上签! 5万+

hdu1728 逃离迷宫( bfs + 标记转向次数)

Description   给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转太多弯

小G的ACM之路 4258

YOLOv11 结合 BiFormer 注意力:打造多场景高精度检测模型实战教程

注册BiFormer模块(若代码未自动注册)# 加载自定义配置的YOLOv11模型。

know_F0727的博客 251

奇偶剪枝--非常巧妙的技巧

奇偶剪枝是数据结构的搜索中,剪枝的一种特殊小技巧。 奇偶剪枝的原理 两点之间的曼哈顿距离为奇数, 则只能在奇数步内到达,偶数同理。 即:假设起点为(x1,y1),终点为(x2,y2),给定 step 步恰好走到终点,则 abs(x2-x1)+abs(y2-y1) 与 step 同奇偶。 证明 以图代证: 一开始没有障碍,“#”表示可以走,S 到 E 的最短步数为6。 接下来有障碍了,要绕路。 黑色的路是最短路,蓝色是最短路的平移,不影响步数,所以只有红色的路是绕的路即多走的路。 通过观察,可以发现一.

叶底藏花~的博客 534

从原理到落地:Mamba-YOLOv8 全面实战指南(源码 + 训练 + 部署一次学会)

在目标检测领域,CNN与Transformer的较量从未停歇。本文提出一种革命性的架构——,将状态空间模型(SSM)首次引入YOLO框架。实验表明,该模型在COCO数据集上达到54.3% mAP@0.5,推理速度达89 FPS(RTX 4090),相比原版YOLOv8提升12.7%精度与23%速度。本文将完整揭示其技术原理与工程实现,助您掌握这一前沿技术。

FJN110的博客 119

Codex 100个真实案例 - 用AI生成建筑平面图SVG(室内设计师的新武器)

本案例用 Codex 生成一套完整的 Python 脚本,自动绘制 SVG 格式的建筑平面图。我们会设计一个90平两室一厅的户型——客厅、主卧、次卧、厨房、卫生间一应俱全,还会自动摆放家具(沙发、床、餐桌、橱柜)、标注尺寸和面积、绘制水电路走向、生成多种配色方案。最终输出的 SVG 文件可以直接用浏览器打开展示,也可以转成 PNG 交给客户。室内设计师看了都说好!

yueyeguzhuo的专栏 758

迷宫中回溯法的剪枝——奇偶剪枝(hdu 1010 Tempter of the Bone)

转自:http://blog.youkuaiyun.com/code_pang/article/details/8839432 问题描述 在一个n行m列的迷宫中,每一步只能向上、下、左、右中任意方向走一格,迷宫中有围墙的地方是无法到达的。从起点s开始,能否刚好走t步,到达e。 例如在下面5行5列的迷宫中,能否恰好经过9步,从s走到e。初始位置在s上,#是围墙。 ...

dengjing1200的博客 153

ThingsBoard集群部署之k8s

今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来。

AldrichEugene 1173

【hdoj_1010】Tempter of the Bone(迷宫+剪枝)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意:给出一个迷宫(含起点和终点),要求找出一条路径,这条路径的长度必须为某个规定的长度. 在做本题之前,先学习了一下迷宫问题:http://blog.youkuaiyun.com/ten_sory/article/details/66975811 在理解迷宫问题的基础上,再做本题.本

tensory的博客 1165

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Tempter of the Bone 回溯法 还有奇偶剪枝

Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 78529Accepted Submission(s): 21432 Problem Desc...

weixin_34377919的博客 81

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HDU.1010 Tempter of the Bone

文章目录一、题目解读1、原题2、分类3、题意4、输入输出格式5、数据范围二、题解参考1、总体思路2、思路①(1).分析(2).AC代码三、评价与后话1、评价2、奇偶剪枝0-1示图绘制代码(C++——EasyX)3、后话 一、题目解读 1、原题 HDU.1010 Tempter of the Bone 2、分类 回溯法 3、题意 给定一个N×MN \times MN×M的迷宫让一只狗去走,迷宫中有一...

God-Excious的博客 808

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

回溯法+奇偶剪枝——Hdu 1010 Tempter of the Bone

1)   题目 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 47967    Accepted Submission(s): 12905 Problem Descriptio

xyjikl 456

HDU 1010 Tempter of the Bone

题目地址:点击打开链接 思路:普通回溯要超时,用到奇偶减枝,网上资料比较多,说我的理解:判断起始点到终点的最短步数,无论偏移几格,偏移的步数一定为偶数,所以最短走的路和要走的路奇偶性相同,所以他们的和或差就相同,不相同就可以直接回溯; AC代码: #include #include #include #include using namespace std; char lol[8][8]

Java识堂,一个有干货的微信公众号 442

HDU Tempter of the Bone

Tempter of the BoneTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 138043    Accepted Submission(s): 36949Problem DescriptionThe doggie found a ...

逆风飞翔 237

hdu 1010

hdu1010 回溯法的两种写法

vbs100的专栏 468

HDU 1010 - Tempter of the Bone 奇偶剪枝+深搜

HDU 1010 - Tempter of the Bone 题意: 在一个迷宫中,小狗的位置为 S ,出口的位置在 D ,出口只有在第 t 秒时才会开门让小狗出去。x 为不能走的的位置(小狗在任意一个位置停留时间不能大于等于 1 秒,因为到达1秒那个位置会下降)。求小狗能否走出迷宫 思路: 简单的 dfs+奇偶剪枝 第一次学奇偶剪枝。。。不会的可以看这篇博客:迷宫中回溯法的剪枝——奇偶...

没有梦想何以远行 240

【总结】DFS常用技巧详解 —— 奇偶剪枝

剪枝 剪枝策略就是在搜索过程中利用过滤条件来剪去完全不用考虑(已经判断这条路走下去得不到最优解)的搜索路径,从而避免了一些不必要的搜索,大大优化了算法求解速度,还保证了结果的正确性。 简单的说就是把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长。剪枝的概念,其实就跟走迷宫避开死胡同差不多。若我们把搜索的过程看成是对一棵树的遍历,那么剪枝顾名思义,就是将树中的...

360°顺滑 1142

迷宫游戏 acm java_HDOJ-ACM1010(JAVA) 奇偶剪枝法 迷宫搜索

第一次遇到迷宫搜索,给我的感觉是十分惊喜的:搞懂这个的话,感觉自己又掌握了一项技能~个人感觉,角色扮演类的游戏,起码都可以在迷宫搜索上找到影子。奇偶剪枝这个算法感觉十分开阔的视野~这样去描述这个具体问题实在太形象生动了~总而言之,十分有趣。仔细的人会发现 每当设计到移动,我们必须想到上下左右,这也让我们看到这类算法的思路。在学习迷宫搜索当中,我发现:这个搜索算法是先分析 找到结果时的情形,然后再...

weixin_39637260的博客 99

DFS中的奇偶剪枝(技巧)

剪枝是什么,简单的说就是把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长。剪枝的概念,其实就跟走迷宫避开死胡同差不多。若我们把搜索的过程看成是对一棵树的遍历,那么剪枝顾名思义,就是将树中的一些“死胡同”,不能到达我们需要的解的枝条“剪”掉,以减少搜索的时间。 这里介绍一下奇偶剪枝 什么是奇偶剪枝? 部分内容来自https://blog.csdn....

weixin_30651273的博客 186
上一篇: 搜索——Ny 90 整数划分
下一篇: 回溯法+奇偶剪枝——Hdu 1010 Tempter of the Bone
庞老板
博客等级 码龄15年 127粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值