首页 > 编程语言 > 详细

输入一组数组,如何输出此数组子序列之和的最大值

时间:2020-04-20 19:41:43      阅读:61      评论:0      收藏:0      [点我收藏+]

方法1:

public class Test {
public static int maxSubSum1(int[] a){
int maxSum=0;int thisSum=0;
for (int i=0;i<a.length;i++){
thisSum+=a[i];
if (thisSum>maxSum)
maxSum=thisSum;
else if (thisSum<0)
thisSum=0;
}
return maxSum;
}

public static void main(String[] args) {
int[] a={4,-3,5,-2,-1,2,6,-2};
int b=maxSubSum1(a);
System.out.println(b);
}
}
解析:i表示当前序列的起点,如果a[i]为负的,那么它不可能代表最优序列的起点,因为任何包含a[i]序列的起点都可以通过用a[i+1]作为起点来改善,如果在内循环检测中发现a[i]-a[j]的子序列都是负的,那么
可以推进i,该算法的复杂度可以达到O(n);
方法2:





















输入一组数组,如何输出此数组子序列之和的最大值

原文:https://www.cnblogs.com/zxz123/p/9445308.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!