DP[dynamic programming]问题汇总分析解答(一)

DP的问题也是绕不开啊,基本思想从0-1背包而来,已经进行过总结了。其他还有好多种的变形,一种种来归纳吧

(一)两个序列的DP问题(给定两个string)

这类的题目总结后以下述几步解决即可。

1.在两个序列的情况下,往往是用二维DP

vector<vector<int>> dp(m+1,vector<int>(n+1,0);

2.然后进行初始化,也即是一个取空串时另一个进行遍历的初始值

3.往往需要根据s[i-1]和t[j-1]的相等于否进行两个分支的处理,此时dp[i][j]表示s串中前i个字符与t串中前j个字符的结果情况

下面看几道典型的题即可

1.绕不开的,肯定是经典的 leetcode No.72 Edit Distance

为什么说经典呢,三种不同的operation操作,对应三种不同的dp状态,这是首先一点需要清楚的;另一点,初始状态的分析,空串与非空串的对应关系。综上所述,严格遵顼我前面说到的分析处理步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值