Advertisement

计算数组的最大连续子数组和其中元素不允许跨越两端

阅读量:

相关描述:

其本质就是计算该序列中的最长连续子数组的最大元素之和。

比如例如给定序列:
{ -5,-2, 11, -4, 13, -5, -8 }
其最大连续子序列为{ 11, -4, 13 },最大和为20。

方法一:暴力 O(n^3)

算法描述:

采用暴力方法进行枚举所有可能的子序列区间端点i,j,并依次计算从i到j这段区间的元素总和,并不断更新当前的最大值。然而这种方法的时间复杂度较高。

代码:


复制代码
  #include<iostream>

    
 #include<cstdio>
    
 #include<cstring>
    
 using namespace std;
    
 const int maxn=100000;
    
 int a[maxn];
    
 int main()
    
 {
    
     int n,max;
    
     while(scanf("%d",&n)&&n!=0)
    
     {
    
     for(int i=1;i<=n;i++)
    
     {
    
         scanf("%d",&a[i]);
    
     }
    
     max=-1111111;

全部评论 (0)

还没有任何评论哟~