![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回溯
文章平均质量分 79
weixin_43842888
这个作者很懒,什么都没留下…
展开
-
【回溯 + 动态规划】LeetCode - 131. 分割回文串
题目描述题目链接解法1:回溯题目要求列出所有符合的情况,不满足回文的直接剪枝,很适合回溯。class Solution {private: vector<vector<string> > ans; vector<string> elem;//ans中的成员 int len; //检查是否是回文字符串 bool check(const string& str, int left, int right) {原创 2021-02-20 22:54:55 · 142 阅读 · 0 评论 -
【回溯 + 背包 + 动态规划】LeetCode - 494. 目标和
题目描述题目链接解法1:暴力枚举 - 回溯/DFS(溢出)1. 回溯经常说回溯算法和递归算法有点类似,都涉及递归,有的问题如果实在想不出状态转移方程,尝试用回溯算法暴力解决也是一个聪明的策略,总比写不出来解法强。回溯算法其实是一个暴力枚举的算法,模板如下关键就是搞清楚什么是「选择列表」,而对于这道题,「选择列表」就是正号 + 或者负号 -,然后利用回溯模板穷举出来所有可能的结果,数一数到底有几种组合能够凑出 targetclass Solution {private: int原创 2021-02-20 11:20:35 · 192 阅读 · 0 评论 -
【DFS + 回溯 + 剪枝】LeetCode - 39. 组合总和
题目描述题目链接解法如何快速判断一道题是否应该使用 DFS + 回溯算法来爆搜。总的来说,你可以从两个方面来考虑:求的是所有的方案,而不是方案数。由于求的是所有方案,不可能有什么特别的优化,我们只能进行枚举。这时候可能的解法有动态规划、记忆化搜索、DFS + 回溯算法。通常数据范围不会太大,只有几十。如果是动态规划或是记忆化搜索的题的话,由于它们的特点在于低重复/不重复枚举,所以一般数据范围可以出到 10510^5105 到 10710^7107,而 DFS + 回溯的话,通常会限制在原创 2021-02-18 22:14:18 · 145 阅读 · 0 评论