算法第三章总结

Posted jjmmboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法第三章总结相关的知识,希望对你有一定的参考价值。

动态规划算法的理解:

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

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

  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出租站的最少租金

 

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

 

以上是关于算法第三章总结的主要内容,如果未能解决你的问题,请参考以下文章

项目开发收尾总结(片段)

算法第三章总结

算法设计与分析:第三章总结

算法分析第三章实验总结

算法第三章总结

代码随想录算法训练营第7天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结