0
点赞
收藏
分享

微信扫一扫

代随-组合问题

niboac 2022-03-21 阅读 97
组合模式

第一块:

1、组合问题:for循环中,因为组合不能重复的缘故,需要在每次递归的时候控制for循环的次数

2、组合问题2:有重复值的。

先排序,树层不能重复用、树枝可以重复用

第二块:多个集合求组合

1、电话号码的字符组合

水平方向上不再剪枝

第三块:切割问题

横向for遍历结尾点,纵向递归再回溯改变串的头

第四块:子集问题

子集问题收集所有节点的结果,组合问题只收集叶子节点(中间过程不收集)的结果

1、子集问题

2、子集问题(2):给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。

本题需要去重:先对数组进行排序。横向for循环遍历时需要去重,树枝不需要去重。

第五块:递增子序列

不能重新排序,又不能出现重复。应选取某种数据结构,记录树层上已经出现过元素的值。

递增子序列,树层上不能回头,递归之下,满足集合size>1,收集结果集

第六块:排列问题

1、全排列:给定一个 没有重复 数字的序列,返回其所有可能的全排列。

没有剪枝,不同位置代表的含义不同,树层上无需剪枝,遍历所有即可。

2、全排列2:给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

去重之前需要对元素进行排列,以免漏掉后面相同的元素。树层上进行剪枝,利用映射标记已经用过的元素,防止结果集出现重复

第七块:N皇后问题:

出于对剪枝的考虑,从上到下一行一行的放皇后,只需要判断前面的行中是否有不满足的、

皇后数量=层数,N皇后,每一个皇后可走的位置是for循环。

第八块:解决数独问题

递归函数中for循环嵌套两层

计算好每个位置属于哪个小方块就方便许多了

举报

相关推荐

0 条评论