常用算法之 【回溯法】
回溯算法,以递归为驱动遍历搜索的回溯操作。在算法题目中多有出现,例如:全排序、组合、子集、棋盘问题等等。
原理
回溯算法 == 递归算法,他是在递归的基础上,进行原数组的回溯撤销操作。 所以回溯函数的雏形在递归上,有:终止条件,递归条件。 那么在一个回溯函数中,对于全排序问题时
可以知道,函数中,回溯的宽度处决于结果集的大小。回溯的深度处决与回溯条件。
所以在递归的原基础上。
public 参数 order(参数){
if(条件){
终止
}
return order(参数)[递归条件]
}
可以演变为:
public void order(参数){
if(条件){
终止
}
for(回溯的宽度){
处理结果
order(参数) 递归演变
回溯操作 【一般指根据题目的撤销操作】
}
}
涉及题目
LeetCode-39. 组合总和
LeetCode-40. 组合总和 II
LeetCode-79. 单词搜索
Powered by Waline v2.14.7