leetcode 712-dp

作者: Ariana不会哭 | 来源:发表于2019-01-06 05:46 被阅读0次
图片.png

C++ code:
//我们建立一个二维数组dp,其中dp[i][j]表示字符串s1的前i个字符和字符串s2的前j个字符变相等所要删除的字符的最小ASCII码累加值。
//dp还是多一圈,如果不一样取当前上+s1/左+s2 最小值


int minimumDeleteSum(string s1, string s2) {
        int m=s1.size();
        int n=s2.size();
        vector<vector<int>> dp(m+1,vector<int>(n+1,0));
        for(int i=1;i<=m;i++){
            dp[i][0]=dp[i-1][0]+s1[i-1];
        }
        for(int i=1;i<=n;i++)
            dp[0][i]=s2[i-1]+dp[0][i-1];
        
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                dp[i][j]=(s1[i-1]==s2[j-1])? dp[i-1][j-1]:min(dp[i][j-1]+s2[j-1],  dp[i-1][j]+s1[i-1] );
            }
        }
        return dp[m][n];
    }

相关文章

网友评论

    本文标题:leetcode 712-dp

    本文链接:https://www.haomeiwen.com/subject/nopjrqtx.html