25_03_11 & 03_12 & 03_13 太好了是回溯我们有救了

回溯剪枝到底剪了个什么东西

c++字符转数字:ch - '0'; 字符串转数字: stoi(str) / stol(str)

https://leetcode.cn/problems/combination-sum/submissions/609261736/

  • 1.组合总和:导致重复的原因是回望过度了,题意其实是可以重复调用同一个值(?),不设置start 会怎么样?为什么?

https://leetcode.cn/problems/combination-sum-ii/description/

  • 2.组合总和II:如果同层出现重复?

https://leetcode.cn/problems/palindrome-partitioning/description/

  • 3.分割回文串:切下之后的下一个起点是哪里?
    (切割问题的start实际上是在start和下一位中间进行切割,理解这一点就明白子集问题为什么会是在start > nums.size() 的时候return 了))

https://leetcode.cn/problems/restore-ip-addresses/description/

  • 4.复原IP地址:虽然简单,小改几下就过了,但,有没有一次就过的好方法呢?

https://leetcode.cn/problems/subsets-ii/description/

  • 5.子集II:同一树枝可以用,同一树层不可以用,used[i]是用来判断是同一树枝还是同一树层的,

  • 6.递增子序列:同一父节点下不能重复使用同一值的节点
    思考一下下面这两张图片为什么有一个可以用used数组判断同层是否使用,另一个不行呢?

全排列确实是没有start,但是多了一个东西,是什么呢?

https://leetcode.cn/problems/reconstruct-itinerary/description/

  • 7.重新安排行程:这种时候(?)最好用二维哈希表,时间效率最优

https://leetcode.cn/problems/sudoku-solver/description/

  • 8.解数独:想一想回溯的过程是怎么一回事,每次回溯的下一步是要干什么

总结:一种用来解决for枚举不能确定for个数的枚举方法(回溯还是太好写了,毕竟有模板)

posted @ 2025-03-13 20:30  Tongkuly  阅读(10)  评论(0)    收藏  举报