HDU 1010 Tempter of the Bone 【DFS】

RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)II 承接上文《RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)I》,继续PN7150 NFC模块的整体适配。本文主要介绍包括HDI实现层、框架层以及设备适配层的代码修改思路。具体包括vendor_adaptor、hdi_service等;以及foundation下的frameworks、services等。此外还包括相关三方库libnfc-nci在鸿蒙平台的移植和适配。需要注意的是,当前nfc适配只是基于作者手上的RK3568平台以及相关OpenHarmony3.2的代码。 阅读详情

图搜索的方法有两种,一种是深度优先,一种是广度优先

由于这两种搜索算法在最坏时间的复杂度都接近于穷举,因此在算法中使用剪枝非常重要。

区别

1)回溯法       =   深度优先   +   剪枝

      分支限界   =   广度优先   +   剪枝

2)回溯法适用于在求解空间内求得所有解,通过不断地深入和回溯,每次扩展一个子节点,可以将满足条件的所有解搜出

       分支限界法适用于在求解空间内求得满足条件的一个解或最优解,因为分支限界使用层层扩展的广度优先搜索,每次扩展出所有的子节点,对已经访问过的节点不再重复访问,每一层都以最优关系递进,因此可以满足条件的最优解。

3)实现方式上,在深度优先搜索中通常使用递归方法对某个节点进行深入挖掘,在得到结果或者到达叶节点后返回并清楚节点的已访问状态。广度优先搜索中需要使用到队列,将某个节点的子节点按照某种顺序加入队列中并按顺序取出,扩展子节点后加入队列尾部,对到达的节点加上已访问状态,这样保证可以以某种条件只访问某个节点一次。

剪枝策略

1)最优化剪枝

记录下当前得到的最优值,如果当前所在的节点已经没有可能得到比当前最优值更好的结果,提起回溯。在使用最优化剪枝的过程中,关键是在第一次得到结果或到达叶子节点后记录下得到值作为当前最优值。当后续遍历树的过程中,通过比较如果得到比当前最优值更好的值则更新当前最优值,如果在某个节点中通过比较发现当前所在节点在继续扩展已经无法得到最优解,则剪枝。

2)可行性剪枝

可行性剪枝一般需要根据问题的理解来进行,需要对问题有深刻的理解同时需要敏锐的观察和思考。对于某个具体问题,当运行到某个节点后根据问题信息可以判断是不可行则不需要继续扩展。比较典型的可行性剪枝是奇偶剪枝。

 

思路:

       注意:题目意思不是要求在T秒之前到达门口,不能用BFS,所以要求到达门口的所有情况中刚好在T时刻到达门口的一种情况。  

   AC代码:   

#include<iostream>
#include<cmath>
using namespace std;
char map[8][8];
int viste[8][8];
int fx[4]={1,-1,0,0},fy[4]={0,0,1,-1};
int n,m,T;
int sx,sy,dx,dy;
int DFS(int tx,int ty,int step)
{
	int i;
	int x,y;
    if(tx==dx&&ty==dy&&step==T)
	{
	     return 1;
	}
	if(step>=T)
	{
	     return 0;
	}/*剪枝一:如果step>T直接cut,至于等于T,是因为没有到达门口,如果到达门口上一个if就返回了*/
	if(T-step<(abs(tx-dx)+abs(ty-dy)))
	{
	     return 0;
	}/*剪枝二:如果T-step比当前位置到门口的距离还小的话,那么到达门口时的step肯定大于了T,所以cut*/
	if((T-step-(abs(tx-dx)+abs(ty-dy)))%2)
	{
	     return 0;
	}/*剪枝三:T-step与(abs(tx-dx)+abs(ty-dy))之差肯定要满足偶数,因为例如:当之差为0,表明从当前位置到门口没有遇到障碍物,
	可以即时到达,当差为1,那么肯定会遇到障碍物,然后转弯多走一步,但是转弯回来到达门口也需要一步
	例如:
	0 0 0 0 0
	3 0 1 0 4
	假设狗的当前位置在3,门在4,T-step=5,(abs(tx-dx)+abs(ty-dy))=4,此时差为1,当狗走到3右边的0位置时,肯定要上走一步,数
	一下,从3到4的位置话,要6步,所以T-step必须至少为6,之差为2,因为如果中途再有障碍物的话,还得多走一步,但是走的返回来也的多走一
	步,所以之差必定为偶数*/
	for(i=0;i<4;i++)
	{
	    x=tx+fx[i];
		y=ty+fy[i];
		if(x>=1&&x<=n&&y>=1&&y<=m&&viste[x][y]==0&&map[x][y]!='X')
		{
		    viste[x][y]=1;
			if(DFS(x,y,step+1))
			{
			    return 1;/*递归返回*/
			}
		     else viste[x][y]=0;
		}
	}
	return 0;
}
int main()
{
	int i,j;
	int k;
    while(cin>>n>>m>>T)
	{
		k=0;
		if(n==0&&m==0&&T==0)break;
	    for(i=1;i<=n;i++)	
			for(j=1;j<=m;j++)
			{
			    cin>>map[i][j];
				if(map[i][j]=='S')
				{
				   sx=i;
				   sy=j;
				}
				if(map[i][j]=='D')
				{
				   dx=i;
				   dy=j;
				}
				if(map[i][j]=='X')
					k++;
				viste[i][j]=0;
			}
    if(n*m-k<T)cout<<"NO"<<endl;/*剪枝四:如果可以走的房间数少于T的话,再这么也在T之前到达门口,所以cut*/
	  else
	  {
	     viste[sx][sy]=1;
		 if(DFS(sx,sy,0))
			cout<<"YES"<<endl;
		    else cout<<"NO"<<endl;
	  }
	}
    return 0;
}
/*不知道为什么在杭电上提交要用C++的输入,输出,scanf不行,即使用了getchar(),所以以后WS后,可以尝试把输出流和输入流改成C++
   特别是char和int交替输入时*/


 

黑猫带你学eMMC协议第17篇:超详细的eMMC HS200 & HS400讲解 1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 本文大约6000字,主要内容有: 1.什么是emmc hs200/hs400? 2.什么是tuning?tuning的过程又是什么? 3.如何设置才能让emmc进入hs200 mode? 4.如何设置才能让emmc进入hs400 mode? 5.emmc关于HS200/HS400内部结构框图对比。 6.部分个人相关经验总结。 阅读详情

相关推荐

STM32F103模拟SSI时序解析:实现高精度绝对式编码器位置读取

本文详细解析了如何在STM32F103微控制器上通过软件模拟SSI协议时序,实现高精度绝对式编码器的位置读取。文章从项目驱动出发,深入剖析了SSI通信原理、硬件电平转换连接、核心软件模拟代码实现及关键时序参数调试方法,并提供了使用示波器进行波形对齐与优化的实战指南,为成本敏感型工业控制与机器人项目提供了高性价比的解决方案。

weixin_29196315的博客 141

HDU-1010Tempter of the Bone(dfs+奇偶剪枝)

Tempter of the Bone 题目链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 157407 Accepted Submission(s): 41882 Problem Description The doggie...

孤风的博客 587

[图解]SysML与EA实战:住宅安全系统接口块设计全解析

本文详细解析了使用SysML和EA工具进行住宅安全系统接口块设计的全流程。从系统上下文图入门到接口块实战技巧,涵盖块定义图与内部块图的视角转换,以及多图协同建模方法论。特别分享EA工具的高效操作指南和常见问题避坑建议,帮助工程师掌握精确信号定义、端口方向设置等关键技能,提升安防系统设计效率。

weixin_29234509的博客 332

hdu 1010 Tempter of the Bone(dfs+剪枝)

题目链接:hdu 1010 Tempter of the Bone(dfs+剪枝) 题意:狗狗从S出发,要在正好t秒的时候到达D,每一块地只能走一次,X代表墙不能走,问能否到达 思路:深搜,但是需要剪枝,每走一步,判断能否在剩下的时间中不考虑墙通过最短的路到达出口,若不能直接返回。 #include&lt;cstdio&gt; #include&lt;cstring&gt; #incl...

yz467796454的博客 294

Shell编程规范及变量

文章目录一.Shell脚本1.1Shell概述1.2Shell脚本 一.Shell脚本 1.1Shell概述 Shell是Linux系统中开机自动加载的一个特殊程序,它将用户输入的指令,转换成Linux内核可以识别的语言,从而让内核执行调用硬件。 Bash是Linux系统中默认使用shell的程序,它位于/bin/bash。 1.2Shell脚本 将需要执行的命令保存到一个文件中,按照顺序执行,它不需要编译,它是解释型的 ...

夏颜的博客 3673

从零开始使用matlab实现EKF-SLAM算法(含完整代码)

扩展卡尔曼滤波器同步定位与建图 (EKF-SLAM) 算法建立在 EKF 的基础上,集成了 EKF 的功能,可解决机器人技术中最具挑战性的问题之一:同时定位与建图 (SLAM)。 EKF-SLAM采用EKF方法来同时估计机器人的状态和周围环境的布局,而无需事先了解位置。 这种双重功能对于在未知环境中运行的自主系统至关重要,使它们能够在绘制区域地图时有效导航。 EKF-SLAM 算法一直是自动驾驶车辆和机器人系统开发的基石,为处理现实世界环境中固有的不确定性提供了一个强大的框架。

mjmmm的博客 6634

HDU1010 Tempter of the Bone(DFS+奇偶剪枝)

题目:HDU1010 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 161732Accepted Submission(s): 42908 Problem Descriptio...

CarreLiu 224

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1052

HDU 1010 Tempter of the Bone (DFS+奇偶剪枝)

奇偶剪枝得到新技能

n-1 743

Truncated SVD for faster dection

Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding...

weixin_35747666的博客 1535

基于微信小程序的扫码签到系统源码

大等于jdk1.8,大于mysql5.5,idea(eclipse),微信开发者工具。代码注释齐全,没有多余代码,适合学习(毕设),二次开发,包含论文技术相关文档。签到管理:新增签到,点击查看码展示二维码(有时效性)springboot mybatis 小程序。签到管理:查看用户创建的签到,可删除。用户管理:查看注册用户信息,及删除。签到记录:查看用户签到记录:可删除。个人信息:展示个人信息,可修改。统计分析:查看用户,签到数量。签到记录:查看用户签到记录。登录注册(含授权登录)我的签到:查看签到记录。

wfuhui的博客 5224

hdu 1010 Tempter of the Bone[dfs]

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010

835

Cilium动手实验室: 精通之旅---1.Getting Started with Cilium

我们需要在 HTTP 层的第 7 层实施策略,以限制允许 tiefighter 调用的确切 API,以及不允许调用哪些 API。上仅需要的 API 资源的访问,从而为微服务之间的通信实施“最低权限”安全方法。船只上进行匹配,因此我们需要在该标签上进行匹配,此外,我们必须确保来自带有标签。为了模拟我们的连接测试,我们将使用 curl 执行简单的 API 调用。在我们立即开始更改策略之前,让我们考虑一下相应的网络策略应该是什么样子。的规则,该规则将通过 L3-L4 策略对死星的访问限制为仅帝国船只。

Q先生 1125

【HDU】1010Tempter of the Bone【dfs+剪枝】

单纯用dfs会超时 要用剪枝优化 提供一组变态数据 6 6 37 S..... ...... ...... ...... ...... D..... NO #include&lt;bits/stdc++.h&gt; #include&lt;cstring&gt; using namespace std; struct node{ int x,y; }; int N,M,T; c...

以梦为马,诗酒趁年华的博客 138

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

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

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

HDU1010 Tempter of the Bone(深度优先搜索DFS+奇偶性剪枝)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题意:       给定一个迷宫图,问T步能否找到门。 分析:       这是个DFS的奇偶剪枝问题,先附张图。  对于代码中的解释 其中t-w为剩余的步数或者说时间, s1+s2为剩余步数, 如果走偶数步要求的时间是奇数,或者走奇数步要求的时间是偶数,都明显不可行 而轻...

Sean 294

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU-1010-Tempter of the Bone

HDU-1010-Tempter of the Bone http://acm.hdu.edu.cn/showproblem.php?pid=1010 给这题折腾了半天啊,刚开始用BFS写的,总是WA,后来发现这题要求在给定的时间点到达,不能早,也不能迟,而BFS每次求出的是最短时间,不合题意,于是转用DFS,剪枝的方法是参考HDU的PPT写的,居然还要考虑奇偶性 可以把map看成这样:

菜鸟的程序人生 960

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU - 1010 Tempter of the Bone【DFS】

Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized ...

一定要站在自己热爱的生活里闪闪发光 3万+

HDU 1010 Tempter of the Bone(DFS,奇偶剪枝)

Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 101688    Accepted Submission(s): 27539 Problem Description The

AC_Dreameng 5432

HDU 1010 Tempter of the Bone 深度优先搜索(DFS)

#include #include #include #include #include #include #include #include using namespace std; const int inf=10000000; int dx[4]={0,0,1,-1}, dy[4]={1,-1,0,0}; char map[8][8]; bool vis[8][8]; int s

PWZER 553

hdu-1010 Tempter of the Bone(DFS+奇偶剪枝)

hdu-1010 Tempter of the Bone(DFS+奇偶剪枝)题目描述 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 109915 Accepted Subm

oYinGui1 862

HDU-1010-Tempter of the Bone( DFS + 深度优先搜索 )

Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 97703    Accepted Submission(s): 26504 Problem Description The

保持对编程的热情! 564

DFS/hdu 1010 Tempter of the Bone

题意   给出一个n*m的地图,s:起点,d:终点,x:障碍物,.:可以走的格子   给出一个时间t,求问是否可以恰好用t时间从起点走到终点。走一步为一个时间。   注意:走过的格子不能再走   注意2:是在时间t刚好到达,而不是时间t以内!也就是说可以在地图上绕远,反正就要在时间t到达! 分析   很普通的深搜,但是有2点剪枝:   1.在刚读入数据后剪枝:当可以走的格子...

diyoucang7967的博客 125

ACM-DFS之Tempter of the Bone——hdu1010

Tempter of the Bone hdu1010 dfs

继续激情,继续奋斗。 1479

HDU1010 Tempter of the Bone DFS

HDU1010 Tempter of the Bone DFS

htrdchh的博客 98

【hdu1010】Tempter of the Bone——dfs

题目: Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 98266    Accepted Submission(s): 26642 Problem Description

CFhM_R's Blog 442

HDU 1010 Tempter of the Bone &&ZOJ 2110【DFS】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题目大意:一只狗受到了骨头的诱惑,进了n*m的迷宫,迷宫的大门在第T秒开启。小狗要恰好在T秒到达。并且.只能走一次。解题思路:BFS求最短时间,这里并不适合。因此dfs.dfs有3个状态dfs(i, j, t),表示到达(i, j)花费t秒。这里要有剪枝:剪枝1.目标状态(x1, y...

dianxuanzhi1019的博客 164
上一篇: HDU 2159 FATE 【二维费用的完全背包问题】
下一篇: HDU 1198 Farm Irrigation 【并查集】
Job_yi
博客等级 码龄14年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值