Files
leetcode-master/problems/kamacoder/两个字符串的最小ASCII删除总和.md
programmercarl 2c32229383 Update
2024-07-15 16:49:16 +08:00

1008 B

本题和代码随想录:两个字符串的删除操作 思路基本是一样的。

#include <iostream>
#include <vector>
using namespace std;
int main() {
    string s1, s2;
    cin >> s1 >> s2;
    vector<vector<int>> dp(s1.size() + 1, vector<int>(s2.size() + 1, 0));

    // s1 如果变成空串的最小删除ASCLL值综合
    for (int i = 1; i <= s1.size(); i++) dp[i][0] = dp[i - 1][0] + s1[i - 1];
    // s2 如果变成空串的最小删除ASCLL值综合
    for (int j = 1; j <= s2.size(); j++) dp[0][j] = dp[0][j - 1] + s2[j - 1];

    for (int i = 1; i <= s1.size(); i++) {
        for (int j = 1; j <= s2.size(); j++) {
            if (s1[i - 1] == s2[j - 1]) dp[i][j] = dp[i - 1][j - 1];
            else dp[i][j] = min(dp[i - 1][j] + s1[i - 1], dp[i][j - 1] + s2[j - 1]);
        }
    }
    cout << dp[s1.size()][s2.size()] << endl;

}