zoukankan      html  css  js  c++  java
  • 算法第三章总结

    动态规划算法的理解:

      就是把一个大问题变成很多个小问题,并通过求出小问题的最优解,利用他们的关系逐一求出其他问题的最优解。

    动态规划应用于子问题重叠的情况:

    1. 要去刻画最优解的结构特征;
    2. 尝试递归地定义最优解的值(就是我们常说的考虑从 i-1 转移到 i );
    3. 计算最优解;
    4. 利用计算出的信息构造一个最优解。

    第一题的核心代码:

    for(int i=2;i<=n;i++){
            int maxn=1;
            for(int j=1;j<i;j++){
                if(a[j]<a[i]){
                    maxn = (dp[j]+1) > maxn ? dp[j]+1 : maxn;
                }
            }
            dp[i]=maxn;
        }

    dp数组即为“以a[i]为结”的“最长子序列”的长度

    第二题的核心代码:

    for(int j=2;j<=n;j++){
        for(int i=2;i<j;i++){
            dp[1][j]= min(dp[1][i]+dp[i][j] , dp[1][j]);
        }
    }

    dp数组即为从i到j出租站的最少租金

    在结对编程的时候发现自己在敲代码时还是没有严格按照规范,没有敲空格使数据分开,就会导致在结对编程的时候看到全部一团代码。虽然一行行得看过去可以理解,但从全局来看难以迅速找到具体想要找的某一行。所以,代码规范非常重要!引以为戒!

  • 相关阅读:
    IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定
    IceMx.Mvc 我的js MVC 框架 一、html代码的分离(视图)
    Android Socket编程基础
    第七次作业
    第六次作业
    第五次作业
    第4次作业
    关于个人项目的总结,最主要是不足
    第二次作业
    微信的优缺点以及发展史
  • 原文地址:https://www.cnblogs.com/jjmmboom/p/11788535.html
Copyright © 2011-2022 走看看