回溯大全【持续更新】

回溯本质上是靠递归实现的一种暴力搜索。基本思想是:尝试,如果不满条件就回溯,继续尝试,不满足就回溯,……如此反复,知道搜索完所有的解空间。尝试代表着一次选择,可以基于不同选择展开成多个解空间(树),到达叶子节点则代表找到一组解,但此时算法并未终结,依旧要向上回溯去尝试其他的解,直到遍历所有的可能情况。回溯有一个好处是可以剪枝,通过约束条件,去除不可能的尝试(解空间),缩小搜索范围。
回溯、动规、贪心之间的关系:
回溯是一种能保证不重复且不遗漏的暴搜实现方法。基本所有的问题都可以通过回溯解决。但它有较高的时间复杂度。当问题满足动态规划的三个条件时,就可以用动规代替回溯,提高效率。当问题满足贪心的条件时,又可以进一步用贪心来高效求解。
递归的题目:
77.组合(组合问题)
78.子集(子集问题)
90. 子集 II(子集问题)
46.全排列(排列问题)
51.N皇后(N皇后问题)
131.分割回文串(分割问题)

以下皆为leetcode中笨猪爆破组的回答

在这里插入图片描述
在这里插入图片描述
回溯、递归、动态规划的区别:
递归是一种结构,即自己调用自己。
回溯是利用递归实现暴搜
动态规划最初是用递归和转移关系用最优子结构推出当前最优。但由于有很多子结构重复计算,所以额外用一定空间来保存最优子结构的解,即加入了“记忆性”。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值