回溯与DFS 强呀

最近写算法题,经常用到回溯法和深度优先算法,总感觉它们的思路其实是差不多的。
回溯法是求问题的解,使用的是DFS(深度优先搜索)。在DFS的过程中发现不是问题的解,那么就开始回溯到上一层或者上一个节点。DFS是遍历整个搜索空间,而不管是否是问题的解。所以更觉得回溯法是DFS的一种应用,DFS更像是一种工具。**
回溯法和DFS(深度优先搜索)的关系_Java_tkzc_csk的博客-CSDN博客 https://blog.csdn.net/tkzc_csk/article/details/82142442?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

这是一位大佬的理解,我看了一些题,其实到现在也没想明白,但是我感觉当要求一条道路时,不需要遍历所有空间,就用回溯。如http://acm.hdu.edu.cn/showproblem.php?pid=1242

这是拯救天使找一条通路。
而像这种http://acm.hdu.edu.cn/showproblem.php?pid=1312
红与黑,要求找到所有的单色块,遍历所有,用到DFS。
主要区别在

		if (judge(x,y)&&!vis[x][y]){
			
			vis[x][y]=1;
			if (map[x][y]=='.')
				dfs(x,y,step+1);	
			else if (map[x][y]=='x')
				dfs(x,y,step+2);
			else if (map[x][y]=='r') 
				dfs(x,y,step+1);
			vis[x][y]=0;

这里有一个vis[x][y]=0;是回溯。
`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值