回溯的概念
回溯法有“通用解题法”之美称,是一种比枚举“聪明”的效率更高的搜索技术。
回溯法是一种试探求解的方法:通过对问题的归纳分析,找出求解问题的一个线索,沿着这一线索往前试探,若试探成功,即可得到解;若试探失败,就逐步往回退,换其他路线再往前试探。
回溯法可以形象地概括为“向前走,碰壁回头”,若再往前走不可能得到解,就回溯,退一步另找线路,这样可以省去大量的无效操作,提高搜索效率。
回溯法分类
1. 迭代回溯,该回溯是非递归回溯,通过迭代式实施回溯,框架描述:
2. 递归回溯,递归也能实现回溯。递归回溯通过递归尝试遍历问题的各个可能解的通路。当发现此路不能时,回溯到上一步,框架描述:
示例
1. 二组均分问题。
参加拔河比赛的16个同学的体重分别为:24 37 29 45 40 34 30 34 33 48