代码随想录算法训练营第二十四天| 回溯算法part01

今天开始进入了回溯算法的练习,经历了二叉树的递归洗礼,已经对回溯有了一个大概的认识了,回溯函数就是递归函数。

回溯并不是一个高效的算法,可以说是纯暴力,但是有些恶心的问题只能通过回溯来解决。 



带你学透回溯算法(理论篇)| 回溯法精讲!_哔哩哔哩_bilibili

 

77. 组合 

给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。

你可以按 任何顺序 返回答案。

自己按照回溯的模板尝试写了,但是发现输出出来的不是组合,而是排列。显示剪枝的地方出现了问题,先去看视频学习一下:

带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!_哔哩哔哩_bilibili

看着看着就悟了,理解了这种剪枝情况需要使用startindex进行辅佐,于是再次画图模拟,然后尝试写:

定义回溯函数,依然是确定终止条件当path数值长度为k时result数值添加path数值,返回,只不过for循环遍历的时候需要进行剪枝控制,因此直接将起始位置定义为startindex,在递归中控制将 startindex自增。然后进行回溯就可以了。

 

代码随想录算法训练营第二十四天| 回溯算法part01_第1张图片

你可能感兴趣的:(算法,数据结构)