求最大连续序列和的一个巧妙方法,时间复杂度O(n)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求最大连续序列和的一个巧妙方法,时间复杂度O(n)相关的知识,希望对你有一定的参考价值。

 1 # include<iostream>
 2 using namespace std;
 3 long long  a[1000000];
 4 long long b[1000000];  //b[i]表示数列前i+1个数的最大连续序列和
 5 int main(){
 6     long long  n=0,i=0;
 7     while(cin>>n){
 8         for(i=0;i<n;i++)
 9             cin>>a[i];
10         b[0]=a[0];
11         long long  ma=a[0];
12         for(i=1;i<n;i++)
13         {
14             b[i]=max(b[i-1]+a[i],a[i]);
15             if(ma<b[i]) ma=b[i];
16         }
17         cout<<ma<<endl;
18     }
19     return 0;
20 }

 

以上是关于求最大连续序列和的一个巧妙方法,时间复杂度O(n)的主要内容,如果未能解决你的问题,请参考以下文章

动态规划连续子数组的最大和

输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)

输入一个整形数组(可能有正数和负数),求数组中连续子数组(最少有一个元素)的最大和。要求时间复杂度为O(n)(解决)

连续子数组的最大和

剑指[42]_最大子序列之和(连续子数组的最大和)

求最大连续子序列之和c语言