码迷,mamicode.com
首页 > 其他好文 > 详细

最大子列和问题

时间:2016-05-09 18:30:32      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

最近刚开始看算法,这里记录一下

求一个数列的子列相加最大的和(如果数列全为负数,则最大为0)

 1 int getMaxSubSum(vector<int> &nums){
 2     int maxSum = 0,thisSum = 0;
 3     for(int i= 0;i<nums.size();++i){
 4         thisSum+=nums[i];
 5         if(thisSum>maxSum){
 6             maxSum = thisSum;
 7         }else if(thisSum<0){
 8             thisSum = 0;
 9         }
10     }
11     return maxSum;
12 }

它的原理如下:

1、如果nums[i]为负,那么它不能为最大子列的起点

2、任何和为负的子序列不可能为最大子列的起点

通过maxSum记录最大和,当发现一段子列的和(thisSum)为负时重新开始求和。

最大子列和问题

标签:

原文地址:http://www.cnblogs.com/mmmmar/p/5474769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!