class MinCost {
public:
int findMinCost(string A, int n, string B, int m, int c0, int c1, int c2) {
// write code here
//dp[i][j] 表示A[0..i-1] 转换到 B[0..j-1] 的最小变换
// c2替换代价 c0 add
// c1 delete
vector<vector<int> > dp(n+1,vector<int>(m+1));
dp[0][0]=0;
for(int i=1;i<m+1;++i){
dp[0][i]=i*c0;
}
for(int i=1;i<n+1;++i){
dp[i][0]=i*c1;
}
for(int i=1;i<n+1;++i){
for(int j=1;j<m+1;++j){
if(A[i-1]==B[j-1]){
int temp=min(dp[i-1][j]+c1,dp[i][j-1]+c0);
dp[i][j]=min(temp,dp[i-1][j-1]);
}else{
int temp=min(dp[i-1][j]+c1,dp[i][j-1]+c0);
dp[i][j]=min(temp,dp[i-1][j-1]+c2);
}
}
}
return dp[n][m];
}
};
字符串str1到str2的代价
猜你喜欢
转载自blog.csdn.net/u010325193/article/details/86370713
今日推荐
周排行