最小编辑代价
OJ 地址:最小编辑代价
int minEditCost(string str1, string str2, int ic, int dc, int rc) {
// write code here
vector<vector<int> > dp(str1.size()+1, vector<int>(str2.size()+1, 0));
for(int i = 1; i <= str2.size(); i++)
{
dp[0][i] = dp[0][i-1] + ic;
}
for(int i = 1; i <= str1.size(); i++)
{
dp[i][0] = dp[i-1][0] + dc;
}
for(int i = 1; i <= str1.size(); i++)
{
for(int j = 1; j <= str2.size(); j++)
{
if(str1[i - 1] == str2[j - 1])
{
dp[i][j] = dp[i-1][j-1];
}
else
{
dp[i][j] = min((dp[i][j-1] + ic), (dp[i-1][j] + dc));
int tmp = min((dp[i-1][j-1] + rc), (dp[i-1][j-1]+ic+dc));
dp[i][j] = min(dp[i][j], tmp);
}
}
}
return dp[str1.size()][str2.size()];