动态规划算法的两种经典解决方式:最优子结构和DP数组的使用解析

2021-09-08  本文已影响0人  攻城狮Chova
动态规划

动态规划算法问题

最优子结构

int maxVal(TreeNode root) {
    if (root == null) {
        return -1;
    }
    int left = maxVal(root.left);
    int right = maxVal(root.right);
    return max(root.val, left, right);
}

这个问题符合最优子结构,以root为根的树的最大值可以通过两边子树的子问题的最大值推导出来

最优子结构总结

DP数组的遍历方向

编辑距离问题

for (int i = 1; i < m; i++) {
    for (int j = 1; j < n; j++) {
        /*
         * 通过dp[i-1][j], dp[i][j-1], dp[i-1][j-1]计算dp[i][j]
         */
    }
}

回文子序列

DP数组遍历总结

上一篇 下一篇

猜你喜欢

热点阅读