712. Minimum ASCII Delete Sum for Two Strings 串相等的最小删除代价
712. Minimum ASCII Delete Sum for Two Strings 串相等的最小删除代价
dp[i][j] 代表 串A的i-1位字符,串B的j-1位字符,对于每一个 i-1 来说,j-1都有删和不删的选择,如果这两个字符相等,那么选择不删,dp[i][j]=dp[i-1][j-1],否则需要删除其中一个,取最小的赋给 dp[i][j]
int minimumDeleteSum(string& s1, string& s2) {
int m=s1.size();
int n=s2.size();
vector<vector<int> > dp(m+1, vector<int>(n+1, 0));
for(int i=0;i<n;++i)
dp[0][i+1]=s2[i]+dp[0][i];
for(int i=1;i<=m;++i) {
dp[i][0]=s1[i-1]+dp[i-1][0];
for(int j=1;j<=n;++j) {
if (s1[i-1]==s2[j-1])
dp[i][j]=dp[i-1][j-1];
else
dp[i][j]=min(dp[i-1][j]+s1[i-1], dp[i][j-1]+s2[j-1]);
}
}
return dp[m][n];
}#DP