回溯是可用递归实现的算法中一种重要类型。

它的特点是正向搜索,反向回溯。本质上是深度优先遍历整个搜索空间。

也即是:初始时从正向开始搜索,逐层递归深入;如果搜索到递归栈结尾,还未成功,则向上回溯一层,继续正向搜索。

如此反复,直至遍历完整个搜索空间,得出最终结果。

可用循环+递归实现。

 

可解决问题:

八皇后:  保存前几皇后位置信息及当前行数。  循环+递归实现。

n元素全排列:数组保存最终排列  循环+递归。每层循环分别把各个元素放在最后,然后减一递归遍历。

C(m,n):求组合。与排列类型,加上顺序就是组合。

01背包:  保存权重数组位置信息。正向搜索(也可反向)。

汉诺塔。

待续。