回溯总结

回溯的知识点总结

  1. 看你可选的选择是不是重复(需不需要使用used数组去重),如“组合总和Ⅱ”中出现的数组的元素是有重复的,而且要求组合都是不一样的。
  2. start参数是不是应该考虑在参数模板中,如果是求的组合数,那么需要start参数,如果求的是排列数,就不需要start参数。
  3. 元素是不是可以重复选择,如在题目“组合总和”中,元素是可以重复选择的,所以start在下一次递归中选择i而不是i + 1
  4. 注意树枝和树层去重的条件注意都牵涉到去重了,那必须是有重复元素的前提下):
    看代码随想录的组合总和Ⅱ,看图说话:

    好好理解,有两个维度,一个是树枝一个是树层,横着的是树层,竖着的是树枝。总结来说就是:
  5. 注意题目分割回文串的判断条件,就能搞明白istart的关系(start是改组答案的begin(), start是改组答案的end() - 1),明白树层的for循环是干嘛的:
  6. 去重可以有两种方法,但是都需要提前排序,一个是unordered_set方法,一个是使用used数组。(以下是unordered_set方法)

  1. 碰到排列问题了,要注意区别了:
  • 没有start了,start的本质还是树枝的顺序
  • 需要用到used来去除树枝的重复了
posted @ 2024-03-09 21:39  铜锣湾陈昊男  阅读(10)  评论(0)    收藏  举报