题目

思路
考虑区间DP。
设dp[i][j]为从i到j这段区间被修正为回文串的最小花费
c[cc][1]为添加字符cc的花费
c[cc][2]为删去字符cc的花费
s为题目给出的字符串。
- 用[i + 1,j]区间转移:这种转移相当于在[i+1,j]区间的左边加入一个字符,让[i,j]变为回文的方法为在左边删去该字符或在右边加上该字符,有转移方程:
dp[i][j] = min(dp[i][j],dp[i + 1][j] + min(c[int(s[i])][1],c[int(s[i])][2])); - 用[i,j − 1][i,j − 1]区间转移:这种转移相当于在[i,j−1][区间的右边加入一个字符,方法同上:
dp[i][j] = min(dp[i][j],dp[i][j - 1] + min(c[int(s[j])][1],c[int(s[j])][2]));
- 当前区间[i,j]


595

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



