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()];
}
};