Preface

刷 leetcode 好有成就感,毕竟在其他 OJ 直接被虐爆。

题面

https://leetcode-cn.com/problems/delete-columns-to-make-sorted-iii/

题解

这不就是最长递增子序列吗...只不过现在多了点字符串。很容易可以得到转移方程:

$$
f[i] = \max_{j < i, \forall s \Rightarrow s[j] \leq s[i]} f[j] + 1
$$

其中 $f[i]$ 代表以 $i$ 为结尾的时候的最长递增子序列的长度。

$$
ans = s.length - \max f
$$

代码

const int maxn = 105;

class Solution {

int f[maxn];

public:
    int minDeletionSize(vector<string>& strs) {
        int n = strs.size();
        int m = strs[0].size();
        f[0] = 1;
        int ans = m - 1;
        for (int i = 1; i < m; i ++) {
            f[i] = 1;
            for (int j = 0; j < i; j ++) {
                bool cap = true;
                for (int p = 0; p < n; p ++)
                    if (strs[p][j] > strs[p][i])
                        cap = false;
                if (!cap) continue;
                f[i] = max(f[i], f[j] + 1);
            }
            ans = min(ans, m - f[i]);
        }
        return ans;
    }
};
最后修改:2022 年 03 月 28 日 12 : 08 PM
真的不买杯奶茶嘛....qwq