• dp 感悟


    8/5 根据局部问题求全局变量问题( 遍历到n, n 也是最后一个), Longest Increasing Subsequence

    能且最大最小的问题:

    //function

            for (int i = 1; i < A.length; i++) {

                can[i] = Integer.MAX_VALUE;

                for (int j = 0; j <= i; j++) {

                   if (can[j] != Integer.MAX_VALUE && j + A[j] >= i)  {

                       can[i] = Math.min(can[i], can[j] + 1);

                   }

                }

    数组求和或求和的最大值问题:

    //function

            for (int i = 1; i <= n; i++) {

                 for (int j = 1; j <= k && j <= i; j++) {

                     for (int l = 1; l <= target; l++) {

                        

                        f[i][j][l] = f[i - 1][j][l];

                        if (l >= A[i - 1]) {

                            f[i][j][l] += f[i - 1][j - 1][l - A[i - 1]];

                        }

                    }

                }

            }

    //function

             for (int i = 1; i <= A.length; i++) {

                 for (int j = 1; j <= m; j++) {

                    f[i][j] = f[i - 1][j];

                    if (j >= A[i - 1]) {

                        f[i][j] = Math.max(f[i - 1][j], f[i - 1][j - A[i - 1]] + V[i - 1]);

                    }

            }

     

    状态: 多为要求值, 方程多为所求值和前一个值和后一个的关系.遍历、比较、遍历+ 比较、遍历 + 状态判断+ 题设要求; 初始化多为边界和起始值的初始化.

    Sequence 题要加判断

     

    Function: 与上一个状态之间的关系: 根据要求 求和、求最大值。最小值。状态为true.

    数组题和String 题, sub 题sequence 题多为和上一个状态, 遍历上一个(另一个)指针在的位置 + 判断+ (分类), 求结果递推。String题多为多开辟一个空间

    Sub题(common题)多为二维, 多为判断当前的元素是否与……相等, 然后(操作当前元素和不操作当前元素)  当前元素在sub里和不在sub里两种递推结果.  当前元素改为…, 或者当前元素时sub的最后一个元素

  • 相关阅读:
    nginx与uwsgi介绍
    Pycharm快捷键
    短信和图片验证码
    linux部署Django脱坑指南
    面试题汇总(七)
    面试题汇总(六)
    面试题汇总(五)
    面试题汇总(四)
    面试题汇总(二)
    iOS Block的本质(四)
  • 原文地址:https://www.cnblogs.com/apanda009/p/7290147.html
Copyright © 2020-2023  润新知