![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 55
数据结构与算法相关知识
古月-_-
这个作者很懒,什么都没留下…
展开
-
动态规划——House Robber (小偷问题)
对于小偷问题,我们分析子问题的依赖关系,发现每个 f(k) 依赖 f(k−1)和 f(k−2)。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。小偷问题,原问题是 “从全部房子中能偷到的最大金额”,将问题的规模缩小,子问题就是 “从 k个房子中能偷到的最大金额 ”,用 f(k)表示。如果不偷这个房子,那么问题就变成在前 k−1个房子中偷到最大的金额,也就是子问题 f(k−1)。如果偷这个房子,那么前一个房子。原创 2023-08-25 22:07:32 · 599 阅读 · 1 评论 -
动态规划——最长递增子序列
是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。,找到其中最长严格递增子序列的长度。原创 2023-08-28 14:37:53 · 101 阅读 · 0 评论 -
动态规划——最长回文子串
上文的所有讨论是建立在子串长度大于 222 的前提之上的,我们还需要考虑动态规划中的边界条件,即子串的长度为 111 或 222。根据这个思路,我们就可以完成动态规划了,最终的答案即为所有 P(i,j)=true中 j−i+1(即子串长度)的最大值。注意:在状态转移方程中,我们是从长度较短的字符串向长度较长的字符串进行转移的,因此一定要注意动态规划的循环顺序。也就是说,只有 s[i+1:j−1]是回文串,并且 s 的第 i 和 j 个字母相同时,s[i:j]才会是回文串。s[i,j]本身不是一个回文串;原创 2023-09-01 21:07:42 · 323 阅读 · 1 评论 -
回溯算法——组合总和 II
回溯函数会尝试各种可能的选择,每次选择后都会进行递归调用,进一步探索问题的解空间。如果在当前路径上发现不满足条件的情况,就回溯到上一步,尝试其他选择。其基本思想是尝试各种可能的解,当发现当前尝试的解不满足问题的约束条件时,就回溯到前一步,继续尝试其他可能的解,直到找到问题的解或者确定问题无解。如果在当前路径上无法找到解,或者已经探索完所有可能的选择,就回溯到上一步,撤销当前选择。从问题的起始状态开始,选择一条路径,尝试一个选择,将其添加到当前解中。如果找到问题的解,将其保存下来,或者根据需要执行其他操作。原创 2023-09-05 17:07:33 · 53 阅读 · 0 评论