class Solution { public: /** * min edit cost * @param str1 string字符串 the string * @param str2 string字符串 the string * @param ic int整型 insert cost * @param dc int整型 delete cost * @param rc int整型 replace cost * @return int整型 */ 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 =0; i<=str2.size();i++){ dp[0][i] = ic*i;//注意这个是增加 } for(int i =0; i<=str1.size();i++){ dp[i][0] = dc*i;//这个是减少,因为我们要匹配后面得。 } for(int i =1; i<=str1.size();i++){ for(int j=1; j<=str2.size();j++){ int r=0; if(str1[i-1]!=str2[j-1]){ r = rc; } dp[i][j] = min(dp[i-1][j]+dc,min(dp[i][j-1]+ic,dp[i-1][j-1] + r)); } } return dp[str1.size()][str2.size()]; } };