字符串str1到str2的代价

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

猜你喜欢

转载自blog.csdn.net/u010325193/article/details/86370713
今日推荐