leetcode712+减少最少的字母凑成相同序列,最长公共子序列变形,DP

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013554860/article/details/83819274

https://leetcode.com/problems/minimum-ascii-delete-sum-for-two-strings/description/

class Solution {
public:
    int minimumDeleteSum(string s1, string s2) {
        string res = "";
        int dp[s1.length()+1][s2.length()+1];
        memset(dp, 0, sizeof(dp));
        int sum = 0;
        for(int i=0; i<s1.length(); i++){
            sum += (int)s1[i];
            for(int j=0; j<s2.length(); j++){
                if(s1[i]==s2[j]){
                    dp[i+1][j+1] = dp[i][j] + (int)s1[i];
                }
                else{
                    dp[i+1][j+1] = max(dp[i][j+1], dp[i+1][j]);
                }
            }
        }
        for(int j=0; j<s2.length(); j++) sum+=(int)s2[j];
        return sum -2*dp[s1.length()][s2.length()];
    }
};

猜你喜欢

转载自blog.csdn.net/u013554860/article/details/83819274