回溯算法详解

目录

什么是回溯?

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

回溯的效率如何?

回溯在面试中的考察频率

如何学好回溯?

回溯通用模板


什么是回溯?

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

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

1.棋盘问题

2.路径搜索问题

3.组合问题

4.排列问题

5.子集问题

回溯的效率如何?

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

回溯在面试中的考察频率

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

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

如何学好回溯?

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

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

回溯通用模板

void backtrace(参数){

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

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

}

你可能感兴趣的:(#数据结构与算法,算法,数据结构,java,回溯)