- 博客(7)
- 收藏
- 关注
原创 多维动态规划——编辑距离
然后是状态的初始化和边界问题,因为是求最小操作数,所以默认值为大数,我习惯赋值为0x3f3f3f3f, 考虑边界问题:如果A.size() = 0, 最少需要B.size()次操作,f[0][j] = j, 反之亦然。因为这道题只求最小操作数,不关系最后的字符串形式,这两种操作达到了同样的目的——让A与B匹配,所以插入和删除是同样的效果。像这样两个字符串的问题,可以用 f[i][j] 来表示,word1的前 i 个字符和word2的前 j 个字符转换最小操作数,如果在字符串A与字符串B的匹配中,
2025-02-13 22:19:54
675
原创 动态规划中状态转移不连续解法
在动态规划的题目中,一般情况下,第 i 个的最优解由第 i - 1 个最优解推导过来,这样可以用一个状态表达式求解。因为需要max和min同时考虑,所以通常开两个数组 fmax[], fmin[], 状态之前相互转移。code(ps:可以用滚动数组优化)但是如果是乘积这种情况下,例题:乘积最大子数组。
2025-02-12 13:37:43
158
原创 经典贪心问题:区间覆盖
贪心思路:既然是要覆盖整个区间,从左开始覆盖,就以左端点排序,然后尽可能让选用的区间覆盖范围更大,因为区间交接处会有重叠,所以优先选右端点更大的,而不是区间长度更长。
2024-11-03 12:51:54
326
1
原创 前缀和与差分
当我们要求一段长度为n的数列的和时,时间复杂度为O(n)。如果需要多次求某一区间内的和时,时间复杂度为O(nm)。这样求解的效率就会很低。那么我们就需要通过前缀和的思想,将时间复杂度降为O(n+m)来解决。在高中时,我们都学过数列,在数列中,设A1,A2,A3,…,An-1,An的前n项和为Sn。An=Sn-Sn-1,那么Al到Ar的值即为Sr-Sl-1。这就是前缀和的思想,我们通过一个数组s[n]来储存数列的前n项的和。
2024-04-14 16:36:05
347
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人