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

    问题描述

    求取数组中最大连续子序列和,例如给定数组为A={1, 3, -2, 4, -5}, 则最大连续子序列和为6,即1+3+(-2)+ 4 = 6。

    O(N)解法

    因为最大 连续子序列和只可能是以位置0~n-1中某个位置结尾。当遍历到第i个元素时,判断在它前面的连续子序列和是否大于0,如果大于0,则以位置i结尾的最大连续子序列和为元素i和前门的连续子序列和相加;否则,则以位置i结尾的最大连续子序列和为元素i。

     1 int MaxSequence(int a[], int len)  
     2 {  
     3     int maxsum, maxhere;  
     4     maxsum = maxhere = a[0];   //初始化最大和为a【0】  
     5     for (int i=1; i<len; i++) {  
     6         if (maxhere <= 0)  
     7             maxhere = a[i];  //如果前面位置最大连续子序列和小于等于0,则以当前位置i结尾的最大连续子序列和为a[i]  
     8         else  
     9             maxhere += a[i]; //如果前面位置最大连续子序列和大于0,则以当前位置i结尾的最大连续子序列和为它们两者之和  
    10         if (maxhere > maxsum) {  
    11             maxsum = maxhere;  //更新最大连续子序列和  
    12         }  
    13     }  
    14     return maxsum;  
    15 }  
  • 相关阅读:
    ios9 键盘使uiwindow上移
    UIStackView在UITableviewCell中
    uitableviewcell侧滑删除等
    系统设置
    UIImagePickerController 导航样式调整
    设置frame时,大小在不同型号手机上不同
    storyBoard Reference 的坑
    uitableview 滚回顶部
    swift格式化输出
    UIAlertController
  • 原文地址:https://www.cnblogs.com/tevic/p/3670168.html
Copyright © 2011-2022 走看看