zoukankan      html  css  js  c++  java
  • 最大连续子序列和

    给定k个整数的序列{N1,N2,...,Nk },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= k。最大连续子序列是所有连续子序中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{11,-4,13},最大连续子序列和即为20。

    个人体会吧:其实本来这动态规划我还是抱有疑问,我想着万一前面来个7,-1,的话不就是可以从7开始加了吗,后面发现自己思维漏洞好多,7+(-1)=6若要到-1的位置小于0,前面就必须为负数,而为负数的时候指针就跳到了7的位置了,突然发现这个思想真的挺好。需要慢慢体会下!

    动态规划法

            时间复杂度:O(N)

            终于到了动态规划的部分了,这么一步一步走来,感受到了算法的无穷魅力。那么如何用动态规划来处理这个问题?

            首先,我们重温将一个问题用动态规划方法处理的准则:

            “最优子结构”、“子问题重叠”、“边界”和“子问题独立”。

            在本问题中,我们可以将子序列与其子子序列进行问题分割。

            最后得到的状态转移方程为:       

           MaxSum[i] = Max{ MaxSum[i-1] + A[i], A[i]};

            在这里,我们不必设置数组MaxSum[]。

    代码实现:

     1 int MaxSubSequence(const int A[], int N)
     2 {
     3     int ThisSum,MaxSum,j;
     4     ThisSum = MaxSum =0;
     5     for(j = 0;j < N;j++)
     6     {
     7         ThisSum += A[j];
     8         
     9         if(ThisSum > MaxSum)
    10             MaxSum = ThisSum;
    11         else if(ThisSum < 0)
    12             ThisSum = 0; 
    13     }
    14     return MaxSum; 
    15 }
  • 相关阅读:
    ureport2 数据源配置
    ureport2 + spring boot 搭建
    alibaba
    Maven Helper
    在Idea中连接数据库并生成实体类
    Intellij jrebel 热部署 安装
    IDEA使用说明
    JPA 常用注解 (hibernate)
    vue + canvas 图片加水印
    vue——批量下载图片
  • 原文地址:https://www.cnblogs.com/blvt/p/7276000.html
Copyright © 2011-2022 走看看