回溯算法详解

目录

什么是回溯?

回溯常用来解决什么问题?

回溯的效率如何?

回溯在面试中的考察频率

如何学好回溯?

回溯通用模板


什么是回溯?

回溯:你处理了之后,再进行”撤销“处理,”撤销“这个动作就是回溯。

回溯常用来解决什么问题?

1.棋盘问题

2.路径搜索问题

3.组合问题

4.排列问题

5.子集问题

回溯的效率如何?

很差很差,相当于是暴力方法,因为它会尝试每一个可能。

回溯在面试中的考察频率

很高,在笔试中也很高。可以用回溯解决,但是拿不到100%的分数,可能可以拿33%或者66%。

组合问题排列问题考的比较多。

如何学好回溯?

学好了递归也就学好了回溯。

一定不能陷入细节,宁愿不求甚解。先会做,再慢慢研究细节。之后就是做题,会做大量的题,大概15+。

回溯通用模板

void backtrace(参数){

//结束条件:没有路可以走了,也就是没有元素可以选择了;或者说找到目标了。

   if(判断是否结束){
 
       return;
  }
    for(从多个可选元素中选一个进行回溯){
    //选了其中一个元素进行处理,相当于做标记
    结果集.add(被选中的元素)
    backtrace(被选中的元素);
    //撤销处理
    结果集.remove(被选中的元素)  
   }

}

在刷过题后再看这个模板会觉得很清晰明了,但回溯问题一般都比较难,单纯套模板也不是那么容易的。让我们一起加油吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值