思路:
在思考这题时发现此题和编辑距离题目十分相似。
编辑距离
对于本题题目的状态设置看完题解后感觉十分巧妙,在原有二维基础上加了个记录删除’(‘括号数来进行状态转移。
状态设置:布尔类型(bool)f(i,j,k)表示s串删除进行删除操作后,可以与t串匹配,删除的左括号与右括号之差为k。
也就说明当k为0时删除的是合法序列。
那么状态如何转移呢:
不难发现在dp[i][j][k]合法的情况下,如果此时 s[i]=t[i]且k=0 那么说明dp[i+1][j+1][0] 也是合法的。
而后对于s串往后加了一个字符串讨论,如果加了一个’('情况下,那么在删除一个’(‘后依旧可以和t串匹配即 dp[i+1][j][k+1]=true 如果为’)'则需要删除此字符串才能与t串匹配这时需要寻找dp[i][j][k>0]情况下是否有合法的,然后进行状态转移,即dp[i][j][k-1]=true。
#include<ios




最低0.47元/天 解锁文章
476

被折叠的 条评论
为什么被折叠?



