暴力递归转向动态规划
你可以看到上面有很多 sbeg + 1, pbeg + 2 这种运算,这些值算出来很有可能相等,那么对于同一个 helper(s, 4, p, 5) 这种函数,可能会调用了多次。这里我的 map 使用 vector 来代替,大小是 (s.size() + 1) * (p.size() + 1) 的大小,每次取值时,通过 getIndex 来找出 vector 中对应的位置下标。逆着遍历,因为你看到了,我们的终止条件在 dp[s.size()][p.size()] 处。这样,我们就得到了完整的动态规划代码。
原创
2023-03-08 18:33:53 ·
255 阅读 ·
0 评论