回溯是可用递归实现的算法中一种重要类型。
它的特点是正向搜索,反向回溯。本质上是深度优先遍历整个搜索空间。
也即是:初始时从正向开始搜索,逐层递归深入;如果搜索到递归栈结尾,还未成功,则向上回溯一层,继续正向搜索。
如此反复,直至遍历完整个搜索空间,得出最终结果。
可用循环+递归实现。
可解决问题:
八皇后: 保存前几皇后位置信息及当前行数。 循环+递归实现。
n元素全排列:数组保存最终排列 循环+递归。每层循环分别把各个元素放在最后,然后减一递归遍历。
C(m,n):求组合。与排列类型,加上顺序就是组合。
01背包: 保存权重数组位置信息。正向搜索(也可反向)。
汉诺塔。
待续。